{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "X62lLTypujDU",
    "tags": []
   },
   "source": [
    "# Imports"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "id": "lU5OiA0FudxK"
   },
   "outputs": [],
   "source": [
    "#import libraries\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.multioutput import MultiOutputRegressor\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "import os"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Library to suppress warnings or deprecation notes\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "    <div style=\"width: 24px; height: 24px; background-color: #e1e1e1; border: 3px solid #9D9D9D; border-radius: 5px; position: absolute;\"> </div>\n",
       "    <div style=\"margin-left: 48px;\">\n",
       "        <h3 style=\"margin-bottom: 0px;\">Client</h3>\n",
       "        <p style=\"color: #9D9D9D; margin-bottom: 0px;\">Client-5ea90061-dfbe-11ed-8e0c-8cf8c5f7bf74</p>\n",
       "        <table style=\"width: 100%; text-align: left;\">\n",
       "\n",
       "        <tr>\n",
       "        \n",
       "            <td style=\"text-align: left;\"><strong>Connection method:</strong> Cluster object</td>\n",
       "            <td style=\"text-align: left;\"><strong>Cluster type:</strong> distributed.LocalCluster</td>\n",
       "        \n",
       "        </tr>\n",
       "\n",
       "        \n",
       "            <tr>\n",
       "                <td style=\"text-align: left;\">\n",
       "                    <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:8787/status\" target=\"_blank\">http://127.0.0.1:8787/status</a>\n",
       "                </td>\n",
       "                <td style=\"text-align: left;\"></td>\n",
       "            </tr>\n",
       "        \n",
       "\n",
       "        </table>\n",
       "\n",
       "        \n",
       "\n",
       "        \n",
       "            <details>\n",
       "            <summary style=\"margin-bottom: 20px;\"><h3 style=\"display: inline;\">Cluster Info</h3></summary>\n",
       "            <div class=\"jp-RenderedHTMLCommon jp-RenderedHTML jp-mod-trusted jp-OutputArea-output\">\n",
       "    <div style=\"width: 24px; height: 24px; background-color: #e1e1e1; border: 3px solid #9D9D9D; border-radius: 5px; position: absolute;\">\n",
       "    </div>\n",
       "    <div style=\"margin-left: 48px;\">\n",
       "        <h3 style=\"margin-bottom: 0px; margin-top: 0px;\">LocalCluster</h3>\n",
       "        <p style=\"color: #9D9D9D; margin-bottom: 0px;\">f8e29748</p>\n",
       "        <table style=\"width: 100%; text-align: left;\">\n",
       "            <tr>\n",
       "                <td style=\"text-align: left;\">\n",
       "                    <strong>Dashboard:</strong> <a href=\"http://127.0.0.1:8787/status\" target=\"_blank\">http://127.0.0.1:8787/status</a>\n",
       "                </td>\n",
       "                <td style=\"text-align: left;\">\n",
       "                    <strong>Workers:</strong> 4\n",
       "                </td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                <td style=\"text-align: left;\">\n",
       "                    <strong>Total threads:</strong> 4\n",
       "                </td>\n",
       "                <td style=\"text-align: left;\">\n",
       "                    <strong>Total memory:</strong> 15.71 GiB\n",
       "                </td>\n",
       "            </tr>\n",
       "            \n",
       "            <tr>\n",
       "    <td style=\"text-align: left;\"><strong>Status:</strong> running</td>\n",
       "    <td style=\"text-align: left;\"><strong>Using processes:</strong> True</td>\n",
       "</tr>\n",
       "\n",
       "            \n",
       "        </table>\n",
       "\n",
       "        <details>\n",
       "            <summary style=\"margin-bottom: 20px;\">\n",
       "                <h3 style=\"display: inline;\">Scheduler Info</h3>\n",
       "            </summary>\n",
       "\n",
       "            <div style=\"\">\n",
       "    <div>\n",
       "        <div style=\"width: 24px; height: 24px; background-color: #FFF7E5; border: 3px solid #FF6132; border-radius: 5px; position: absolute;\"> </div>\n",
       "        <div style=\"margin-left: 48px;\">\n",
       "            <h3 style=\"margin-bottom: 0px;\">Scheduler</h3>\n",
       "            <p style=\"color: #9D9D9D; margin-bottom: 0px;\">Scheduler-4cf78131-ab89-4d57-87c5-b9307771ba6b</p>\n",
       "            <table style=\"width: 100%; text-align: left;\">\n",
       "                <tr>\n",
       "                    <td style=\"text-align: left;\">\n",
       "                        <strong>Comm:</strong> tcp://127.0.0.1:50873\n",
       "                    </td>\n",
       "                    <td style=\"text-align: left;\">\n",
       "                        <strong>Workers:</strong> 4\n",
       "                    </td>\n",
       "                </tr>\n",
       "                <tr>\n",
       "                    <td style=\"text-align: left;\">\n",
       "                        <strong>Dashboard:</strong> <a href=\"http://127.0.0.1:8787/status\" target=\"_blank\">http://127.0.0.1:8787/status</a>\n",
       "                    </td>\n",
       "                    <td style=\"text-align: left;\">\n",
       "                        <strong>Total threads:</strong> 4\n",
       "                    </td>\n",
       "                </tr>\n",
       "                <tr>\n",
       "                    <td style=\"text-align: left;\">\n",
       "                        <strong>Started:</strong> Just now\n",
       "                    </td>\n",
       "                    <td style=\"text-align: left;\">\n",
       "                        <strong>Total memory:</strong> 15.71 GiB\n",
       "                    </td>\n",
       "                </tr>\n",
       "            </table>\n",
       "        </div>\n",
       "    </div>\n",
       "\n",
       "    <details style=\"margin-left: 48px;\">\n",
       "        <summary style=\"margin-bottom: 20px;\">\n",
       "            <h3 style=\"display: inline;\">Workers</h3>\n",
       "        </summary>\n",
       "\n",
       "        \n",
       "        <div style=\"margin-bottom: 20px;\">\n",
       "            <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
       "            <div style=\"margin-left: 48px;\">\n",
       "            <details>\n",
       "                <summary>\n",
       "                    <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 0</h4>\n",
       "                </summary>\n",
       "                <table style=\"width: 100%; text-align: left;\">\n",
       "                    <tr>\n",
       "                        <td style=\"text-align: left;\">\n",
       "                            <strong>Comm: </strong> tcp://127.0.0.1:50895\n",
       "                        </td>\n",
       "                        <td style=\"text-align: left;\">\n",
       "                            <strong>Total threads: </strong> 1\n",
       "                        </td>\n",
       "                    </tr>\n",
       "                    <tr>\n",
       "                        <td style=\"text-align: left;\">\n",
       "                            <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:50897/status\" target=\"_blank\">http://127.0.0.1:50897/status</a>\n",
       "                        </td>\n",
       "                        <td style=\"text-align: left;\">\n",
       "                            <strong>Memory: </strong> 3.93 GiB\n",
       "                        </td>\n",
       "                    </tr>\n",
       "                    <tr>\n",
       "                        <td style=\"text-align: left;\">\n",
       "                            <strong>Nanny: </strong> tcp://127.0.0.1:50876\n",
       "                        </td>\n",
       "                        <td style=\"text-align: left;\"></td>\n",
       "                    </tr>\n",
       "                    <tr>\n",
       "                        <td colspan=\"2\" style=\"text-align: left;\">\n",
       "                            <strong>Local directory: </strong> C:\\Users\\ksucrops\\AppData\\Local\\Temp\\dask-worker-space\\worker-1aw8q2q6\n",
       "                        </td>\n",
       "                    </tr>\n",
       "\n",
       "                    \n",
       "\n",
       "                    \n",
       "\n",
       "                </table>\n",
       "            </details>\n",
       "            </div>\n",
       "        </div>\n",
       "        \n",
       "        <div style=\"margin-bottom: 20px;\">\n",
       "            <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
       "            <div style=\"margin-left: 48px;\">\n",
       "            <details>\n",
       "                <summary>\n",
       "                    <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 1</h4>\n",
       "                </summary>\n",
       "                <table style=\"width: 100%; text-align: left;\">\n",
       "                    <tr>\n",
       "                        <td style=\"text-align: left;\">\n",
       "                            <strong>Comm: </strong> tcp://127.0.0.1:50896\n",
       "                        </td>\n",
       "                        <td style=\"text-align: left;\">\n",
       "                            <strong>Total threads: </strong> 1\n",
       "                        </td>\n",
       "                    </tr>\n",
       "                    <tr>\n",
       "                        <td style=\"text-align: left;\">\n",
       "                            <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:50899/status\" target=\"_blank\">http://127.0.0.1:50899/status</a>\n",
       "                        </td>\n",
       "                        <td style=\"text-align: left;\">\n",
       "                            <strong>Memory: </strong> 3.93 GiB\n",
       "                        </td>\n",
       "                    </tr>\n",
       "                    <tr>\n",
       "                        <td style=\"text-align: left;\">\n",
       "                            <strong>Nanny: </strong> tcp://127.0.0.1:50877\n",
       "                        </td>\n",
       "                        <td style=\"text-align: left;\"></td>\n",
       "                    </tr>\n",
       "                    <tr>\n",
       "                        <td colspan=\"2\" style=\"text-align: left;\">\n",
       "                            <strong>Local directory: </strong> C:\\Users\\ksucrops\\AppData\\Local\\Temp\\dask-worker-space\\worker-qtnzeyq4\n",
       "                        </td>\n",
       "                    </tr>\n",
       "\n",
       "                    \n",
       "\n",
       "                    \n",
       "\n",
       "                </table>\n",
       "            </details>\n",
       "            </div>\n",
       "        </div>\n",
       "        \n",
       "        <div style=\"margin-bottom: 20px;\">\n",
       "            <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
       "            <div style=\"margin-left: 48px;\">\n",
       "            <details>\n",
       "                <summary>\n",
       "                    <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 2</h4>\n",
       "                </summary>\n",
       "                <table style=\"width: 100%; text-align: left;\">\n",
       "                    <tr>\n",
       "                        <td style=\"text-align: left;\">\n",
       "                            <strong>Comm: </strong> tcp://127.0.0.1:50892\n",
       "                        </td>\n",
       "                        <td style=\"text-align: left;\">\n",
       "                            <strong>Total threads: </strong> 1\n",
       "                        </td>\n",
       "                    </tr>\n",
       "                    <tr>\n",
       "                        <td style=\"text-align: left;\">\n",
       "                            <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:50893/status\" target=\"_blank\">http://127.0.0.1:50893/status</a>\n",
       "                        </td>\n",
       "                        <td style=\"text-align: left;\">\n",
       "                            <strong>Memory: </strong> 3.93 GiB\n",
       "                        </td>\n",
       "                    </tr>\n",
       "                    <tr>\n",
       "                        <td style=\"text-align: left;\">\n",
       "                            <strong>Nanny: </strong> tcp://127.0.0.1:50878\n",
       "                        </td>\n",
       "                        <td style=\"text-align: left;\"></td>\n",
       "                    </tr>\n",
       "                    <tr>\n",
       "                        <td colspan=\"2\" style=\"text-align: left;\">\n",
       "                            <strong>Local directory: </strong> C:\\Users\\ksucrops\\AppData\\Local\\Temp\\dask-worker-space\\worker-esr9ae6c\n",
       "                        </td>\n",
       "                    </tr>\n",
       "\n",
       "                    \n",
       "\n",
       "                    \n",
       "\n",
       "                </table>\n",
       "            </details>\n",
       "            </div>\n",
       "        </div>\n",
       "        \n",
       "        <div style=\"margin-bottom: 20px;\">\n",
       "            <div style=\"width: 24px; height: 24px; background-color: #DBF5FF; border: 3px solid #4CC9FF; border-radius: 5px; position: absolute;\"> </div>\n",
       "            <div style=\"margin-left: 48px;\">\n",
       "            <details>\n",
       "                <summary>\n",
       "                    <h4 style=\"margin-bottom: 0px; display: inline;\">Worker: 3</h4>\n",
       "                </summary>\n",
       "                <table style=\"width: 100%; text-align: left;\">\n",
       "                    <tr>\n",
       "                        <td style=\"text-align: left;\">\n",
       "                            <strong>Comm: </strong> tcp://127.0.0.1:50901\n",
       "                        </td>\n",
       "                        <td style=\"text-align: left;\">\n",
       "                            <strong>Total threads: </strong> 1\n",
       "                        </td>\n",
       "                    </tr>\n",
       "                    <tr>\n",
       "                        <td style=\"text-align: left;\">\n",
       "                            <strong>Dashboard: </strong> <a href=\"http://127.0.0.1:50902/status\" target=\"_blank\">http://127.0.0.1:50902/status</a>\n",
       "                        </td>\n",
       "                        <td style=\"text-align: left;\">\n",
       "                            <strong>Memory: </strong> 3.93 GiB\n",
       "                        </td>\n",
       "                    </tr>\n",
       "                    <tr>\n",
       "                        <td style=\"text-align: left;\">\n",
       "                            <strong>Nanny: </strong> tcp://127.0.0.1:50879\n",
       "                        </td>\n",
       "                        <td style=\"text-align: left;\"></td>\n",
       "                    </tr>\n",
       "                    <tr>\n",
       "                        <td colspan=\"2\" style=\"text-align: left;\">\n",
       "                            <strong>Local directory: </strong> C:\\Users\\ksucrops\\AppData\\Local\\Temp\\dask-worker-space\\worker-5phziceg\n",
       "                        </td>\n",
       "                    </tr>\n",
       "\n",
       "                    \n",
       "\n",
       "                    \n",
       "\n",
       "                </table>\n",
       "            </details>\n",
       "            </div>\n",
       "        </div>\n",
       "        \n",
       "\n",
       "    </details>\n",
       "</div>\n",
       "\n",
       "        </details>\n",
       "    </div>\n",
       "</div>\n",
       "            </details>\n",
       "        \n",
       "\n",
       "    </div>\n",
       "</div>"
      ],
      "text/plain": [
       "<Client: 'tcp://127.0.0.1:50873' processes=4 threads=4, memory=15.71 GiB>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "from dask.distributed import Client\n",
    "\n",
    "client = Client(n_workers=4, threads_per_worker=1)\n",
    "client"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "# Functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "#METRIC CLASSFICATION REPORT\n",
    "def classification_report_to_dataframe(str_representation_of_report):\n",
    "    split_string = [x.split(' ') for x in str_representation_of_report.split('\\n')]\n",
    "    column_names = ['']+[x for x in split_string[0] if x!='']\n",
    "    values = []\n",
    "    for table_row in split_string[1:-1]:\n",
    "        table_row = [value for value in table_row if value!='']\n",
    "        if table_row!=[]:\n",
    "            values.append(table_row)\n",
    "    for i in values:\n",
    "        for j in range(len(i)):\n",
    "            if i[1] == 'avg':\n",
    "                i[0:2] = [' '.join(i[0:2])]\n",
    "            if len(i) == 3:\n",
    "                i.insert(1,np.nan)\n",
    "                i.insert(2, np.nan)\n",
    "            else:\n",
    "                pass\n",
    "    report_to_df = pd.DataFrame(data=values, columns=column_names)\n",
    "    return report_to_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# defining a function to compute different metrics to check performance of a classification model built using sklearn\n",
    "def model_performance_classification_sklearn(model, predictors, target):\n",
    "    \"\"\"\n",
    "    Function to compute different metrics to check classification model performance\n",
    "\n",
    "    model: classifier\n",
    "    predictors: independent variables\n",
    "    target: dependent variable\n",
    "    \"\"\"\n",
    "\n",
    "    TP = confusion_matrix(target, model.predict(predictors))[1, 1]\n",
    "    FP = confusion_matrix(target, model.predict(predictors))[0, 1]\n",
    "    FN = confusion_matrix(target, model.predict(predictors))[1, 0]\n",
    "\n",
    "    # predicting using the independent variables\n",
    "    pred = model.predict(predictors)\n",
    "\n",
    "    acc = accuracy_score(target, pred)  # to compute Accuracy\n",
    "    recall = recall_score(target, pred)  # to compute Recall\n",
    "    precision = precision_score(target, pred)  # to compute Precision\n",
    "    f1 = f1_score(target, pred)  # to compute F1-score\n",
    "\n",
    "    # creating a dataframe of metrics\n",
    "    df_perf = pd.DataFrame(\n",
    "        {\n",
    "            \"Accuracy\": acc,\n",
    "            \"Recall\": recall,\n",
    "            \"Precision\": precision,\n",
    "            \"F1\": f1\n",
    "        },\n",
    "        index=[0],\n",
    "    )\n",
    "\n",
    "    return df_perf"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "8k_PJhlqv2BT",
    "tags": []
   },
   "source": [
    "# Building dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ID</th>\n",
       "      <th>Polder</th>\n",
       "      <th>TRAIN</th>\n",
       "      <th>Prod</th>\n",
       "      <th>Class_name</th>\n",
       "      <th>X</th>\n",
       "      <th>y</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2</td>\n",
       "      <td>22</td>\n",
       "      <td>100</td>\n",
       "      <td>1976.0000</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>749241.441943</td>\n",
       "      <td>2.503858e+06</td>\n",
       "      <td>2.45107</td>\n",
       "      <td>241.0</td>\n",
       "      <td>2.75180</td>\n",
       "      <td>304.0</td>\n",
       "      <td>2.36679</td>\n",
       "      <td>415.0</td>\n",
       "      <td>63.0</td>\n",
       "      <td>111.0</td>\n",
       "      <td>174.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3</td>\n",
       "      <td>22</td>\n",
       "      <td>100</td>\n",
       "      <td>1976.0000</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>749280.247420</td>\n",
       "      <td>2.503860e+06</td>\n",
       "      <td>2.48620</td>\n",
       "      <td>226.0</td>\n",
       "      <td>2.76417</td>\n",
       "      <td>306.0</td>\n",
       "      <td>2.34705</td>\n",
       "      <td>373.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>67.0</td>\n",
       "      <td>147.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>873</td>\n",
       "      <td>22</td>\n",
       "      <td>200</td>\n",
       "      <td>3952.0000</td>\n",
       "      <td>Modern</td>\n",
       "      <td>749352.874186</td>\n",
       "      <td>2.503917e+06</td>\n",
       "      <td>2.57024</td>\n",
       "      <td>228.0</td>\n",
       "      <td>2.75471</td>\n",
       "      <td>308.0</td>\n",
       "      <td>2.46106</td>\n",
       "      <td>358.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>130.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>7</td>\n",
       "      <td>22</td>\n",
       "      <td>200</td>\n",
       "      <td>3556.8000</td>\n",
       "      <td>Modern</td>\n",
       "      <td>749335.073508</td>\n",
       "      <td>2.503972e+06</td>\n",
       "      <td>2.47520</td>\n",
       "      <td>243.0</td>\n",
       "      <td>2.69385</td>\n",
       "      <td>314.0</td>\n",
       "      <td>2.31072</td>\n",
       "      <td>356.0</td>\n",
       "      <td>71.0</td>\n",
       "      <td>42.0</td>\n",
       "      <td>113.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>11</td>\n",
       "      <td>22</td>\n",
       "      <td>100</td>\n",
       "      <td>1796.3636</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>749109.869245</td>\n",
       "      <td>2.504332e+06</td>\n",
       "      <td>2.34621</td>\n",
       "      <td>213.0</td>\n",
       "      <td>2.71852</td>\n",
       "      <td>308.0</td>\n",
       "      <td>2.42036</td>\n",
       "      <td>359.0</td>\n",
       "      <td>95.0</td>\n",
       "      <td>51.0</td>\n",
       "      <td>146.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1294</th>\n",
       "      <td>1741</td>\n",
       "      <td>34/2P</td>\n",
       "      <td>100</td>\n",
       "      <td>2470.0000</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>760353.574358</td>\n",
       "      <td>2.506596e+06</td>\n",
       "      <td>2.34935</td>\n",
       "      <td>228.0</td>\n",
       "      <td>2.71751</td>\n",
       "      <td>273.0</td>\n",
       "      <td>2.24199</td>\n",
       "      <td>391.0</td>\n",
       "      <td>45.0</td>\n",
       "      <td>118.0</td>\n",
       "      <td>163.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1295</th>\n",
       "      <td>1742</td>\n",
       "      <td>34/2P</td>\n",
       "      <td>100</td>\n",
       "      <td>2470.0000</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>760450.172702</td>\n",
       "      <td>2.506757e+06</td>\n",
       "      <td>2.28062</td>\n",
       "      <td>243.0</td>\n",
       "      <td>2.78377</td>\n",
       "      <td>284.0</td>\n",
       "      <td>2.43114</td>\n",
       "      <td>375.0</td>\n",
       "      <td>41.0</td>\n",
       "      <td>91.0</td>\n",
       "      <td>132.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1296</th>\n",
       "      <td>1745</td>\n",
       "      <td>34/2P</td>\n",
       "      <td>100</td>\n",
       "      <td>2470.0000</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>760377.308595</td>\n",
       "      <td>2.506272e+06</td>\n",
       "      <td>2.45838</td>\n",
       "      <td>239.0</td>\n",
       "      <td>2.70821</td>\n",
       "      <td>296.0</td>\n",
       "      <td>2.30837</td>\n",
       "      <td>399.0</td>\n",
       "      <td>57.0</td>\n",
       "      <td>103.0</td>\n",
       "      <td>160.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1297</th>\n",
       "      <td>1808</td>\n",
       "      <td>34/2P</td>\n",
       "      <td>100</td>\n",
       "      <td>2568.8000</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>761342.400206</td>\n",
       "      <td>2.510379e+06</td>\n",
       "      <td>2.56810</td>\n",
       "      <td>213.0</td>\n",
       "      <td>2.60962</td>\n",
       "      <td>273.0</td>\n",
       "      <td>2.38839</td>\n",
       "      <td>379.0</td>\n",
       "      <td>60.0</td>\n",
       "      <td>106.0</td>\n",
       "      <td>166.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1298</th>\n",
       "      <td>1811</td>\n",
       "      <td>34/2P</td>\n",
       "      <td>100</td>\n",
       "      <td>1976.0000</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>761471.984477</td>\n",
       "      <td>2.509417e+06</td>\n",
       "      <td>2.40203</td>\n",
       "      <td>240.0</td>\n",
       "      <td>2.63409</td>\n",
       "      <td>277.0</td>\n",
       "      <td>2.32711</td>\n",
       "      <td>349.0</td>\n",
       "      <td>37.0</td>\n",
       "      <td>72.0</td>\n",
       "      <td>109.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5191 rows × 16 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        ID Polder  TRAIN       Prod   Class_name              X             y  \\\n",
       "0        2     22    100  1976.0000  Traditional  749241.441943  2.503858e+06   \n",
       "1        3     22    100  1976.0000  Traditional  749280.247420  2.503860e+06   \n",
       "2      873     22    200  3952.0000       Modern  749352.874186  2.503917e+06   \n",
       "3        7     22    200  3556.8000       Modern  749335.073508  2.503972e+06   \n",
       "4       11     22    100  1796.3636  Traditional  749109.869245  2.504332e+06   \n",
       "...    ...    ...    ...        ...          ...            ...           ...   \n",
       "1294  1741  34/2P    100  2470.0000  Traditional  760353.574358  2.506596e+06   \n",
       "1295  1742  34/2P    100  2470.0000  Traditional  760450.172702  2.506757e+06   \n",
       "1296  1745  34/2P    100  2470.0000  Traditional  760377.308595  2.506272e+06   \n",
       "1297  1808  34/2P    100  2568.8000  Traditional  761342.400206  2.510379e+06   \n",
       "1298  1811  34/2P    100  1976.0000  Traditional  761471.984477  2.509417e+06   \n",
       "\n",
       "            1      2        3      4        5      6     7      8      9  \n",
       "0     2.45107  241.0  2.75180  304.0  2.36679  415.0  63.0  111.0  174.0  \n",
       "1     2.48620  226.0  2.76417  306.0  2.34705  373.0  80.0   67.0  147.0  \n",
       "2     2.57024  228.0  2.75471  308.0  2.46106  358.0  80.0   50.0  130.0  \n",
       "3     2.47520  243.0  2.69385  314.0  2.31072  356.0  71.0   42.0  113.0  \n",
       "4     2.34621  213.0  2.71852  308.0  2.42036  359.0  95.0   51.0  146.0  \n",
       "...       ...    ...      ...    ...      ...    ...   ...    ...    ...  \n",
       "1294  2.34935  228.0  2.71751  273.0  2.24199  391.0  45.0  118.0  163.0  \n",
       "1295  2.28062  243.0  2.78377  284.0  2.43114  375.0  41.0   91.0  132.0  \n",
       "1296  2.45838  239.0  2.70821  296.0  2.30837  399.0  57.0  103.0  160.0  \n",
       "1297  2.56810  213.0  2.60962  273.0  2.38839  379.0  60.0  106.0  166.0  \n",
       "1298  2.40203  240.0  2.63409  277.0  2.32711  349.0  37.0   72.0  109.0  \n",
       "\n",
       "[5191 rows x 16 columns]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# read csv train polder 22\n",
    "data_polder_22 = pd.read_csv(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\data\\polder_22.csv')\n",
    "data_polder_29 = pd.read_csv(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\data\\polder_29.csv')\n",
    "data_polder_30 = pd.read_csv(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\data\\polder_30.csv')\n",
    "data_polder_34 = pd.read_csv(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\data\\polder_34.csv')\n",
    "\n",
    "data_all_polders = pd.concat([data_polder_22,\n",
    "                              data_polder_29,\n",
    "                              data_polder_30,\n",
    "                              data_polder_34])\n",
    "data_all_polders"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 0
    },
    "id": "a2KWLPwVv4sJ",
    "outputId": "8d8c051d-94c7-4b27-9112-be5ead7f061b"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((5191, 16), (1289, 14))"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_polder = pd.DataFrame(data_all_polders['Class_name'])\n",
    "\n",
    "df_polder['Polder'] = data_all_polders['Polder']\n",
    "\n",
    "df_polder['Id'] = data_all_polders['ID']\n",
    "\n",
    "\n",
    "df_polder['x'] = data_all_polders['X']\n",
    "df_polder['y'] = data_all_polders['y']\n",
    "\n",
    "df_polder['value_SOS'] = data_all_polders['1']\n",
    "df_polder['doy_SOS'] = data_all_polders['2']\n",
    "\n",
    "df_polder['value_POS'] = data_all_polders['3']\n",
    "df_polder['doy_POS'] = data_all_polders['4']\n",
    "\n",
    "df_polder['value_EOS'] = data_all_polders['5']\n",
    "df_polder['doy_EOS'] = data_all_polders['6']\n",
    "\n",
    "df_polder['Increase'] = data_all_polders['7']\n",
    "df_polder['Decrease'] = data_all_polders['8']\n",
    "df_polder['Total_Lenght'] = data_all_polders['9']\n",
    "\n",
    "\n",
    "df_polder =df_polder.dropna(how = 'any')\n",
    "\n",
    "data_all_polders.shape, df_polder.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Polder stat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<pandas.core.groupby.generic.DataFrameGroupBy object at 0x000002109F728730>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "polder_stat = df_polder.groupby(df_polder['Polder'])\n",
    "polder_stat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "polder_22_df = pd.DataFrame(polder_stat.get_group('22'))\n",
    "polder_29_df = pd.DataFrame(polder_stat.get_group('29'))\n",
    "polder_30_df = pd.DataFrame(polder_stat.get_group('30'))\n",
    "polder_34_df = pd.DataFrame(polder_stat.get_group('34/2P'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "polder_stat_22 = polder_22_df.groupby(polder_22_df['Class_name'])\n",
    "polder_22_df_stat_trad = pd.DataFrame(polder_stat_22.get_group('Traditional'))\n",
    "polder_22_df_stat_mode = pd.DataFrame(polder_stat_22.get_group('Modern'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "polder_stat_29 = polder_29_df.groupby(polder_29_df['Class_name'])\n",
    "polder_29_df_stat_trad = pd.DataFrame(polder_stat_29.get_group('Traditional'))\n",
    "polder_29_df_stat_mode = pd.DataFrame(polder_stat_29.get_group('Modern'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "polder_stat_30 = polder_30_df.groupby(polder_30_df['Class_name'])\n",
    "polder_30_df_stat_trad = pd.DataFrame(polder_stat_30.get_group('Traditional'))\n",
    "polder_30_df_stat_mode = pd.DataFrame(polder_stat_30.get_group('Modern'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "polder_stat_34 = polder_34_df.groupby(polder_34_df['Class_name'])\n",
    "polder_34_df_stat_trad = pd.DataFrame(polder_stat_34.get_group('Traditional'))\n",
    "polder_34_df_stat_mode = pd.DataFrame(polder_stat_34.get_group('Modern'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>Traditional</th>\n",
       "      <th>std</th>\n",
       "      <th>Modern</th>\n",
       "      <th>std</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Feature</th>\n",
       "      <th>Polder</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"4\" valign=\"top\">doy_SOS</th>\n",
       "      <th>22</th>\n",
       "      <td>229</td>\n",
       "      <td>14</td>\n",
       "      <td>238</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>232</td>\n",
       "      <td>18</td>\n",
       "      <td>243</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>230</td>\n",
       "      <td>13</td>\n",
       "      <td>238</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>231</td>\n",
       "      <td>15</td>\n",
       "      <td>237</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"4\" valign=\"top\">doy_POS</th>\n",
       "      <th>22</th>\n",
       "      <td>297</td>\n",
       "      <td>17</td>\n",
       "      <td>297</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>298</td>\n",
       "      <td>19</td>\n",
       "      <td>292</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>296</td>\n",
       "      <td>18</td>\n",
       "      <td>296</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>295</td>\n",
       "      <td>18</td>\n",
       "      <td>294</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"4\" valign=\"top\">doy_EOS</th>\n",
       "      <th>22</th>\n",
       "      <td>372</td>\n",
       "      <td>17</td>\n",
       "      <td>358</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>368</td>\n",
       "      <td>24</td>\n",
       "      <td>351</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>378</td>\n",
       "      <td>20</td>\n",
       "      <td>353</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>377</td>\n",
       "      <td>23</td>\n",
       "      <td>355</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"4\" valign=\"top\">Increase</th>\n",
       "      <th>22</th>\n",
       "      <td>67</td>\n",
       "      <td>21</td>\n",
       "      <td>58</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>65</td>\n",
       "      <td>23</td>\n",
       "      <td>49</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>66</td>\n",
       "      <td>22</td>\n",
       "      <td>58</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>64</td>\n",
       "      <td>22</td>\n",
       "      <td>56</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"4\" valign=\"top\">Decrease</th>\n",
       "      <th>22</th>\n",
       "      <td>75</td>\n",
       "      <td>26</td>\n",
       "      <td>61</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>70</td>\n",
       "      <td>21</td>\n",
       "      <td>58</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>81</td>\n",
       "      <td>26</td>\n",
       "      <td>56</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>81</td>\n",
       "      <td>26</td>\n",
       "      <td>61</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"4\" valign=\"top\">Total_Lenght</th>\n",
       "      <th>22</th>\n",
       "      <td>142</td>\n",
       "      <td>19</td>\n",
       "      <td>120</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>135</td>\n",
       "      <td>26</td>\n",
       "      <td>107</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>148</td>\n",
       "      <td>21</td>\n",
       "      <td>114</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>146</td>\n",
       "      <td>24</td>\n",
       "      <td>117</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     Traditional  std  Modern  std\n",
       "Feature      Polder                               \n",
       "doy_SOS      22              229   14     238   14\n",
       "             29              232   18     243   17\n",
       "             30              230   13     238   15\n",
       "             34              231   15     237   14\n",
       "doy_POS      22              297   17     297   16\n",
       "             29              298   19     292   19\n",
       "             30              296   18     296   18\n",
       "             34              295   18     294   17\n",
       "doy_EOS      22              372   17     358   12\n",
       "             29              368   24     351   15\n",
       "             30              378   20     353   11\n",
       "             34              377   23     355   13\n",
       "Increase     22               67   21      58   20\n",
       "             29               65   23      49   20\n",
       "             30               66   22      58   20\n",
       "             34               64   22      56   20\n",
       "Decrease     22               75   26      61   18\n",
       "             29               70   21      58   18\n",
       "             30               81   26      56   19\n",
       "             34               81   26      61   20\n",
       "Total_Lenght 22              142   19     120   17\n",
       "             29              135   26     107   17\n",
       "             30              148   21     114   16\n",
       "             34              146   24     117   19"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labels = [\n",
    "    \n",
    "    [\"doy_SOS\",\"doy_POS\", \"doy_EOS\",\"Increase\",\"Decrease\",\"Total_Lenght\"],\n",
    "    [\"22\", \"29\", \"30\", \"34\"]\n",
    "]\n",
    "\n",
    "\n",
    "tuples = list(zip(*labels))\n",
    "index = pd.MultiIndex.from_product(labels, names=[\"Feature\", \"Polder\"])\n",
    "\n",
    "\n",
    "df_stats = pd.DataFrame([\n",
    "    \n",
    "    [polder_22_df_stat_trad.doy_SOS.mean(),polder_22_df_stat_trad.doy_SOS.std(),polder_22_df_stat_mode.doy_SOS.mean(),polder_22_df_stat_mode.doy_SOS.std()],\n",
    "    [polder_29_df_stat_trad.doy_SOS.mean(),polder_29_df_stat_trad.doy_SOS.std(),polder_29_df_stat_mode.doy_SOS.mean(),polder_29_df_stat_mode.doy_SOS.std()],\n",
    "    [polder_30_df_stat_trad.doy_SOS.mean(),polder_30_df_stat_trad.doy_SOS.std(),polder_30_df_stat_mode.doy_SOS.mean(),polder_30_df_stat_mode.doy_SOS.std()],\n",
    "    [polder_34_df_stat_trad.doy_SOS.mean(),polder_34_df_stat_trad.doy_SOS.std(),polder_34_df_stat_mode.doy_SOS.mean(),polder_34_df_stat_mode.doy_SOS.std()],\n",
    "    \n",
    "    [polder_22_df_stat_trad.doy_POS.mean(),polder_22_df_stat_trad.doy_POS.std(),polder_22_df_stat_mode.doy_POS.mean(),polder_22_df_stat_mode.doy_POS.std()],\n",
    "    [polder_29_df_stat_trad.doy_POS.mean(),polder_29_df_stat_trad.doy_POS.std(),polder_29_df_stat_mode.doy_POS.mean(),polder_29_df_stat_mode.doy_POS.std()],\n",
    "    [polder_30_df_stat_trad.doy_POS.mean(),polder_30_df_stat_trad.doy_POS.std(),polder_30_df_stat_mode.doy_POS.mean(),polder_30_df_stat_mode.doy_POS.std()],\n",
    "    [polder_34_df_stat_trad.doy_POS.mean(),polder_34_df_stat_trad.doy_POS.std(),polder_34_df_stat_mode.doy_POS.mean(),polder_34_df_stat_mode.doy_POS.std()],\n",
    "    \n",
    "    [polder_22_df_stat_trad.doy_EOS.mean(),polder_22_df_stat_trad.doy_EOS.std(),polder_22_df_stat_mode.doy_EOS.mean(),polder_22_df_stat_mode.doy_EOS.std()],\n",
    "    [polder_29_df_stat_trad.doy_EOS.mean(),polder_29_df_stat_trad.doy_EOS.std(),polder_29_df_stat_mode.doy_EOS.mean(),polder_29_df_stat_mode.doy_EOS.std()],\n",
    "    [polder_30_df_stat_trad.doy_EOS.mean(),polder_30_df_stat_trad.doy_EOS.std(),polder_30_df_stat_mode.doy_EOS.mean(),polder_30_df_stat_mode.doy_EOS.std()],\n",
    "    [polder_34_df_stat_trad.doy_EOS.mean(),polder_34_df_stat_trad.doy_EOS.std(),polder_34_df_stat_mode.doy_EOS.mean(),polder_34_df_stat_mode.doy_EOS.std()],\n",
    "\n",
    "    [polder_22_df_stat_trad.Increase.mean(),polder_22_df_stat_trad.Increase.std(),polder_22_df_stat_mode.Increase.mean(),polder_22_df_stat_mode.Increase.std()],\n",
    "    [polder_29_df_stat_trad.Increase.mean(),polder_29_df_stat_trad.Increase.std(),polder_29_df_stat_mode.Increase.mean(),polder_29_df_stat_mode.Increase.std()],\n",
    "    [polder_30_df_stat_trad.Increase.mean(),polder_30_df_stat_trad.Increase.std(),polder_30_df_stat_mode.Increase.mean(),polder_30_df_stat_mode.Increase.std()],\n",
    "    [polder_34_df_stat_trad.Increase.mean(),polder_34_df_stat_trad.Increase.std(),polder_34_df_stat_mode.Increase.mean(),polder_34_df_stat_mode.Increase.std()],\n",
    "    \n",
    "    [polder_22_df_stat_trad.Decrease.mean(),polder_22_df_stat_trad.Decrease.std(),polder_22_df_stat_mode.Decrease.mean(),polder_22_df_stat_mode.Decrease.std()],\n",
    "    [polder_29_df_stat_trad.Decrease.mean(),polder_29_df_stat_trad.Decrease.std(),polder_29_df_stat_mode.Decrease.mean(),polder_29_df_stat_mode.Decrease.std()],\n",
    "    [polder_30_df_stat_trad.Decrease.mean(),polder_30_df_stat_trad.Decrease.std(),polder_30_df_stat_mode.Decrease.mean(),polder_30_df_stat_mode.Decrease.std()],\n",
    "    [polder_34_df_stat_trad.Decrease.mean(),polder_34_df_stat_trad.Decrease.std(),polder_34_df_stat_mode.Decrease.mean(),polder_34_df_stat_mode.Decrease.std()],\n",
    "    \n",
    "\n",
    "    [polder_22_df_stat_trad.Total_Lenght.mean(),polder_22_df_stat_trad.Total_Lenght.std(),polder_22_df_stat_mode.Total_Lenght.mean(),polder_22_df_stat_mode.Total_Lenght.std()],\n",
    "    [polder_29_df_stat_trad.Total_Lenght.mean(),polder_29_df_stat_trad.Total_Lenght.std(),polder_29_df_stat_mode.Total_Lenght.mean(),polder_29_df_stat_mode.Total_Lenght.std()],\n",
    "    [polder_30_df_stat_trad.Total_Lenght.mean(),polder_30_df_stat_trad.Total_Lenght.std(),polder_30_df_stat_mode.Total_Lenght.mean(),polder_30_df_stat_mode.Total_Lenght.std()],\n",
    "    [polder_34_df_stat_trad.Total_Lenght.mean(),polder_34_df_stat_trad.Total_Lenght.std(),polder_34_df_stat_mode.Total_Lenght.mean(),polder_34_df_stat_mode.Total_Lenght.std()],\n",
    "\n",
    "],\n",
    "    \n",
    "    index=index,columns=[\"Traditional\", \"std\", \"Modern\", \"std\"])\n",
    "\n",
    "\n",
    "df_stats = df_stats.astype(int)\n",
    "df_stats"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Class</th>\n",
       "      <th>Samples</th>\n",
       "      <th>%</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Modern</td>\n",
       "      <td>660</td>\n",
       "      <td>51.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>629</td>\n",
       "      <td>48.8</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         Class  Samples     %\n",
       "1       Modern      660  51.2\n",
       "0  Traditional      629  48.8"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#check number of data by class\n",
    "from collections import Counter\n",
    "\n",
    "def class_count(a):\n",
    "    counter=Counter(a)\n",
    "    kv=[list(counter.keys()),list(counter.values())]\n",
    "    abt2 = pd.DataFrame(np.array(kv).T, columns=['Class','Samples'])\n",
    "    abt2['Samples'] = abt2['Samples'].astype('int64')\n",
    "    abt2['%'] = round(abt2['Samples'] / a.shape[0] * 100, 2)\n",
    "    return abt2.sort_values('Samples',ascending=False)\n",
    "\n",
    "class_count(df_polder['Class_name'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "## Group data by rice type"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "# separe traditional x modern\n",
    "hybrids = df_polder.groupby(df_polder['Class_name'])\n",
    "\n",
    "traditional = pd.DataFrame(hybrids.get_group('Traditional'))\n",
    "modern = pd.DataFrame(hybrids.get_group('Modern'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((629, 12), (517, 13))"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from scipy import stats\n",
    "z_traditional = traditional.drop(labels=['Class_name','Polder'], axis=1)\n",
    "z_traditional_score = stats.zscore(z_traditional)\n",
    "\n",
    "data_traditional_clean =  z_traditional_score.drop(labels=['x','y'], axis=1)\n",
    "\n",
    "data_traditional_cleanED = z_traditional[(z_traditional_score < 2).all(axis=1)]\n",
    "\n",
    "data_traditional_cleanED['Class_name'] = 'Traditional'\n",
    "\n",
    "z_traditional.shape, data_traditional_cleanED.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((660, 12), (529, 13))"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from scipy import stats\n",
    "z_modern = modern.drop(labels=['Class_name','Polder'], axis=1)\n",
    "z_modern_score = stats.zscore(z_modern)\n",
    "\n",
    "data_modern_clean =  z_modern_score.drop(labels=['x','y'], axis=1)\n",
    "\n",
    "data_modern_cleanED = z_modern[(z_modern_score < 2).all(axis=1)]\n",
    "\n",
    "data_modern_cleanED['Class_name'] = 'Modern'\n",
    "\n",
    "\n",
    "z_modern.shape, data_modern_cleanED.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "190.0"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_all_rice = pd.concat([data_traditional_cleanED,data_modern_cleanED])\n",
    "data_all_rice.Total_Lenght.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_all_rice.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\data\\data_all_clean.xlsx', index=True, header=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>Id</th>\n",
       "      <th>x</th>\n",
       "      <th>y</th>\n",
       "      <th>value_SOS</th>\n",
       "      <th>doy_SOS</th>\n",
       "      <th>value_POS</th>\n",
       "      <th>doy_POS</th>\n",
       "      <th>value_EOS</th>\n",
       "      <th>doy_EOS</th>\n",
       "      <th>Increase</th>\n",
       "      <th>Decrease</th>\n",
       "      <th>Total_Lenght</th>\n",
       "      <th>Class_name</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>749241.441943</td>\n",
       "      <td>2.503858e+06</td>\n",
       "      <td>2.45107</td>\n",
       "      <td>241</td>\n",
       "      <td>2.75180</td>\n",
       "      <td>304</td>\n",
       "      <td>2.36679</td>\n",
       "      <td>415</td>\n",
       "      <td>63</td>\n",
       "      <td>111</td>\n",
       "      <td>174</td>\n",
       "      <td>Traditional</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>749280.247420</td>\n",
       "      <td>2.503860e+06</td>\n",
       "      <td>2.48620</td>\n",
       "      <td>226</td>\n",
       "      <td>2.76417</td>\n",
       "      <td>306</td>\n",
       "      <td>2.34705</td>\n",
       "      <td>373</td>\n",
       "      <td>80</td>\n",
       "      <td>67</td>\n",
       "      <td>147</td>\n",
       "      <td>Traditional</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4</td>\n",
       "      <td>11</td>\n",
       "      <td>749109.869245</td>\n",
       "      <td>2.504332e+06</td>\n",
       "      <td>2.34621</td>\n",
       "      <td>213</td>\n",
       "      <td>2.71852</td>\n",
       "      <td>308</td>\n",
       "      <td>2.42036</td>\n",
       "      <td>359</td>\n",
       "      <td>95</td>\n",
       "      <td>51</td>\n",
       "      <td>146</td>\n",
       "      <td>Traditional</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>5</td>\n",
       "      <td>13</td>\n",
       "      <td>749174.867408</td>\n",
       "      <td>2.504313e+06</td>\n",
       "      <td>2.60870</td>\n",
       "      <td>213</td>\n",
       "      <td>2.77875</td>\n",
       "      <td>286</td>\n",
       "      <td>2.34208</td>\n",
       "      <td>360</td>\n",
       "      <td>73</td>\n",
       "      <td>74</td>\n",
       "      <td>147</td>\n",
       "      <td>Traditional</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>6</td>\n",
       "      <td>14</td>\n",
       "      <td>749186.259842</td>\n",
       "      <td>2.504325e+06</td>\n",
       "      <td>2.55898</td>\n",
       "      <td>215</td>\n",
       "      <td>2.75781</td>\n",
       "      <td>273</td>\n",
       "      <td>2.34198</td>\n",
       "      <td>361</td>\n",
       "      <td>58</td>\n",
       "      <td>88</td>\n",
       "      <td>146</td>\n",
       "      <td>Traditional</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Unnamed: 0  Id              x             y  value_SOS  doy_SOS  value_POS  \\\n",
       "0           0   2  749241.441943  2.503858e+06    2.45107      241    2.75180   \n",
       "1           1   3  749280.247420  2.503860e+06    2.48620      226    2.76417   \n",
       "2           4  11  749109.869245  2.504332e+06    2.34621      213    2.71852   \n",
       "3           5  13  749174.867408  2.504313e+06    2.60870      213    2.77875   \n",
       "4           6  14  749186.259842  2.504325e+06    2.55898      215    2.75781   \n",
       "\n",
       "   doy_POS  value_EOS  doy_EOS  Increase  Decrease  Total_Lenght   Class_name  \n",
       "0      304    2.36679      415        63       111           174  Traditional  \n",
       "1      306    2.34705      373        80        67           147  Traditional  \n",
       "2      308    2.42036      359        95        51           146  Traditional  \n",
       "3      286    2.34208      360        73        74           147  Traditional  \n",
       "4      273    2.34198      361        58        88           146  Traditional  "
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_all_rice = pd.read_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\data\\data_all_clean.xlsx')\n",
    "data_all_rice.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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qFu3rue4MTExvPfee/znP/+5ypkX4trkW47wabGxsVy4cIEmTZrw1ltvodFocLvdvPDCC6SlpZGRkUGPHj3o0aMHAGfOnOHAgQP07t2bvn375jnWjBkzAOjXrx/Lli3jxx9/5K233spXZseOHT29MQA0Gg0//vgju3btYvDgwZ4Ga8uWLcyfP586deoU2Ojm2rNnD19//TUGg4GFCxdSp04dAJxOJ48//jhr1qxhypQpvPHGG1eM4UqOHDlCZmYm3bp144033kBRFB599FHGjRuHy+XKs69Go2HAgAH5jpEbD4DVauWXX37BbDbTunVr1q1bx/Lly7n11ls9++zevRuVSsV///tfz4Vd/fr12b59O+fOnSMyMpKPPvqIEydO0KVLF7788kvPBdnDDz/MoEGD+PHHHxk4cCAtW7b0HDcrK4sJEybw008/FfjlQgghKrvLL3pMJhOzZs1i69ateRKGnTt3pmHDhnlem9v7IFdh2zTIaRvvvfdeLly4wMMPP8zzzz9/xRiL8vl9//33e9Uz79I27rnnnuOpp55ixYoVTJs2jeeff97Tk2LMmDEcPnyYjRs3Urt2bcaPH0+XLl3yHOvSst1uN+3btyc1NZUTJ05w++23891337Fs2TImTpyIwWDA6XSyePFiFEXh9ttvL3TMQgjhKwpzTQDgcrl4+eWX+e233/LcFLrcbbfdRosWLQB4+umnGThwIJs2bWLdunX5PrMBXn/9dRITExk5cmSehNgdd9zBnXfeyQcffEDfvn2JiooCrpzgLMju3bsBeOWVVzztVMuWLfnjjz84d+5cnoRh06ZN852HwMDAPD/PnTuXzMzMPG3tqFGjPNcqe/fuxel00q9fP1555RUARo4cyZtvvklmZiaQcz379ttvoygK06ZNo23btnnOxc8//8w777zDN998k6fsOXPm0KdPnzw9LoXwlsxhKHxazZo1adasGYcOHaJr1648//zzzJkzh2eeeYapU6d6umlfy5kzZ1i7di3R0dG89dZbGI1GfvvtN5KSkvLtm5KSwunTpzl16hTbtm3j77//BsjTwHjjr7/+wu1207NnzzwNsVqt9tw9W716dYEx5D7i4+MLPHaLFi2oVq0aa9as4ZZbbuGVV15h+fLlvPXWW0yZMiXPvllZWfTu3Tvf41KLFi0iOTmZQYMGeS7mfvjhhzz79O7dG5fLRc+ePXn00Uf55ptvuOmmm5g6darnDuSqVasAGD16dJ7eG7Vq1fIMq768u3+HDh3Ytm0bP/7445VPphBCVGJut5vTp09z4sQJ1q9f72lfatSokWe/sWPH5vuszr0IAu/atNOnT3P33Xdz4cIFevTocdVkIRTt8/vcuXN52qzci6TC6tevH0C+4djffPMNarWaYcOGcfLkScaOHcvp06cLLPv48ePMmzeP1NRUjEYjderUoW7dutx4441YLBZWrFgB5Awdi4+Pp0OHDtKjXQhRJRXmmgByvpufOnWKDz/8sNDHNhqNdO3aFcj/mQ45o8fWr18PkK9zROvWrWndujV2u51169Z5tue2nZc+bDZbgeXn1uPOO+/k/vvv57PPPqNOnTp89dVX9OrVK8++X3/9db5zkHszDnISprNmzUKj0TBhwgTatGnDqVOnWLNmjWefjh074u/vz6xZs+jXrx9vvvkmO3fu5IMPPuD1118HYO3atdhsNlq3bp0nWXjpOdi4cSNWq9WzvV27diiKwsSJE8nIyCiwrkIUhvQwFD5NURS+++47vvjiC/744w8WLVrEokWLUBSFkSNHenrVXcuMGTNwuVyMHDkSf39/br31VubMmcPs2bMZO3Zsnn2//vprvv76a8/PJpOJ0aNHc9tttxWpDomJiQCeu2SXyh1ylrvPlWK45ZZb+OKLL/K93mw289NPP/H555+zevVq5s2bx7x589BoNIwdOzbP3Ti9Xs9777131Vh/+uknIOfOWJMmTahfvz779+9n27ZtngbuhRdeICoqioULF7JmzRpPo9m6dWu++uorgoKCPPW5vEfM1er8f//3f9x66618/PHHdOvW7apxCiFEZZR7kXapW265Jd/cuM8//3y++fwu7XHoTZs2Z84cVCoVOp2OdevWsXfvXk9PkIIU5fP78p56V5pz90qCgoIASE1NzbP9+uuv98wz5e/vz9SpU1m6dCljxoy5Ytl16tRh4sSJnl4iI0aM4J9//mH+/PkMGTLEM+fViBEjCh2fEEL4ksJcEwBMmDCBxx57jBkzZtCnT59CHz/38/fyz3SA5ORkz9RHhb02Kqjt/PXXXwvszHHfffdhMpn4+eef2bJlC5s2beLTTz8lOjqar776Kk/bOmTIELp3757n9ZdO7fHXX39x7tw5evXqRWRkJHfeeSfbt29n2rRp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Wheue2rS+vXrWbp0KYMHD3ZPqyvXIZ5IEoYeqGnTpkydOhWtVuue9ttvv9GmTRuGDBnCM888455eVFTEihUraNOmDQCHDh0iJiam1PaaN2/O/v37q6fwlVRRjAAWi4UjR47Qvn177r33Xm699VZat24NeE6McP44N2zYwOLFi/nf//5XZl1PibOiGPfv34/D4eDDDz+kV69eDBkyhM8//9z9epSnxAgVx7lz505iYmJ44YUX6N27NwMHDuTnn38mPDwcqDtxnumdd96hbdu2XHfdde5pnhTnpVQfjllFMfbp04eOHTty66230qZNG2655RYeeeQR2rdvD3hGjBXF53Q68fLyKrW8RqPhyJEjgGfEV8JisQBw5ZVXMnz4cEJCQhgxYgQHDx6sMIa6ECPAI488wty5c93XE2eqCzHWlWvEin6HdeX6sL6r6HdcF66Na8K5jmldukatbuc6pnXhuqempKen89xzz/Huu+9iNpvd0+vSdYinkYShh1NVlffff58///yT5557rtS8vLw8HnroIUwmE3feeScA+fn5pf74AEwmEwUFBdVV5Co7V4zR0dHs2LGDefPmsXjxYj7//HPAM2OEsnGmp6fz7LPP8s477+Dt7V1meU+M8+wYc3Nz6datG+PGjWPlypW8/fbbzJo1i2nTpgGeGSOUjTM7O5sffviB9u3bs2LFCj7++GPmzp3L9OnTgboTZ4mTJ0/y888/M3HixFLLe2qcl1J9OGZnx2iz2YiKimL69Ons2LGDKVOm8NFHH7FmzRrA82I8O75BgwaxZs0afvvtNxwOB1u2bOGXX37BarUCnhcfFD/JX7VqFRqNhgkTJpw3hroQI+C+QS5PXYmxRF24RjxXfHXt+rA+O/t3XBevjavb2ce0rl6jVqezj2ldu+6pLi6XiyeeeILx48cTGxtbal5dvA7xFJIw9GB5eXlMmDCBhQsXMnv2bFq2bOmed+TIEW655RYcDgczZ850PwExm81lOg0uKioqt9KtDSqKUa/Xo9fradeuHbfffjuLFi0CPC9GKBtnTEwMTz75JOPGjTvn67qeFmd5v8vevXszc+ZMunXrhl6vp3379txxxx3u5uOeFiOUH6fBYKBdu3aMHDkSvV5PbGwsY8eOZcmSJUDdibPE/Pnz3YN3nMkT47yU6sMxKy/Gjz76CIPBQK9evdDr9Vx11VVcc8017sGNPCnG8uLr1KkTb731Fh9//DG9e/fmyy+/ZMSIEe7XID0pvhImk4mwsDCeeOIJVq9efd4Y6kKM2dnZFS5fl2KsK9eI54qvLl0f1ndn/47r2rVxTTj7mJb8rdSla9TqdvYxrUvXPdVpypQpGAwGxo0bV2ZeXbwO8RSSMPRQJ06c4KabbiIvL4958+aVuvFcuXIlo0aNom/fvnz55Zf4+fm557Vo0YKDBw+W2tahQ4fc/WXVJueKccaMGTz66KOllrXZbO44PSlGKD/OxMRENm3axCeffEKXLl3o0qULp06d4qWXXuK+++4DPCvOc/0u//jjD7799ttSy9psNkwmE+BZMcK542zWrBk2m63UsiX9mkDdibPE0qVLuf7668us52lxXkr14ZidK8ZTp05ht9tLLavT6dDr9YDnxHiu+LKysmjRogULFy5k48aNTJ48mcTERPcNrafEt3XrVoYOHVrqXGWz2dDr9TRv3rzCGOpCjGe3TDhbXYnR068RK4pv7ty5der6sL461+8YYO3atXXm2rg6VfR306RJkzp1jVpdKjqmx48frxPXPdVtwYIFbNq0yf33vWjRIhYtWkSXLl2IiYmpE9chHqlGhloRFyUrK0u96qqr1Kefflp1Op2l5m3btk1t06aN+v3335e7bsmIQuvXr3ePINS1a1c1MzOzGkpeeRXFuGvXLrVNmzbq4sWLVafTqf71119qt27d1MWLF6uq6jkxqmrFcZ6tX79+pUaC85Q4K4px6dKlavv27dV169apLpdL3bp1q9q9e3f1p59+UlXVc2JU1YrjPHTokNq2bVv1888/Vx0Oh7p//361b9++6ldffaWqat2JU1VVNSMjQ42JiVGPHTtWZp4nxXkp1YdjVlGM3333ndq+fXt11apVqsvlUjdu3KjGxcWpy5cvV1XVM2KsKL7t27erHTt2VPft26fa7XZ18eLFavv27d0jXXtCfKqqqnl5eeqVV16pvvbaa6rValXj4+PVkSNHqv/73//UjIwMtUuXLur06dNVm82mrl+/3h2TqtaNGM+0YcOGMqMk14UY68I1YkXx1aXrw/qssn+nquq518bVraJjWpeuUatTRce0Llz31AZPPfWUe5TkunId4okkYeiBpk2bpsbExKgdOnRQO3bsWOpz3333qS1btiwz/e6773av/9NPP6lDhgxRO3bs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fK0wefJk/vzzTxITEzEajcTGxjJmzBiuvvpq93JVuX8T9YskDEW943A4ePrpp5k/fz4Gg6HcZWbMmMHrr7+OxWLhmmuuwWKxsGTJEl5++WV27tzJm2++6V42KCiIsWPHurf966+/8ttvv5GTk8OMGTPKXe5MZ98UzZw5s1Q5zk4Y3n///ezatYuhQ4fStGlTDh06xKJFi9i2bRu//PILJpPJveytt95KaGhoqfVjY2PPc4QqVtk43n33Xa688koaNmxY7nb+/vtvxowZQ25uLt27d+eaa64hJyeHX375hQcffNBdcd51113k5OQAMH36dHJycrjvvvtKxSmEEJ5Ar9fz4IMP4nK5SExM5JdffuHFF18kIyODhx56qNSy5Z3nunbtCkBGRgY333wzJ06coFOnTgwbNozjx4/z66+/snLlSubOnUtMTIx7vWuuuYbmzZujqioJCQksWLCA559/niZNmtClS5cyy52pQYMGpX4+evQoa9euBeDw4cOsWrWKK6+80j1/5cqV/Oc//yEyMpJbb70VRVFYtGgRL774Iqqqctttt7mXbdKkCdddd12Z4+Tn51ep43kulYkjISGBt956i5dffvmc23n22WeZP38+/v7+XH311QQEBLBp0yZmzJjBqlWrWLBgAa1bt+aRRx4BYN++fSxdupQOHTpw1VVXAcW/M5fLdVHxCCFETenbty+dOnUqNc3X17fUz7m5uTz33HN8+eWX59zOxx9/zEcffYTZbGbo0KGEhYWxd+9evvvuO5YvX86CBQuIiopyn0/j4+OZP39+qXriYu9h3nvvPaZMmYK3tzdXX301vr6+rFu3jqlTp/LHH38wZ86cUsnT8mIveSB3pvT0dHei87rrriMgIIA1a9YwdepUEhIS+OCDD9zLllwHnK1169alfv76669xOBwAzJ49m/Hjx6PX693zn332WX799Vf69OnD9ddfT2JiIgsWLGDLli0sWrSIsLAw8vLyuPXWWzly5AgxMTGMGzeO/Px8Fi9ezGOPPcb27dt59tlnS+33fPdvov6RhKGolw4cOMAnn3zCY489VmZecnIy77zzDjqdjm+//ZYWLVoAxS0qxo0bR2FhIYWFhe7lAwMDS534Bw8ezPXXX8/27dtLbdfHx6dM8k+n0xEZGen+OSUlhd9++41GjRphsVjYuXMnW7dudVdWdrudPXv2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aHGXlJSYwYMHm6efftp4PB6ze/duM2bMGPPss8+GTNxNpdzUcpSbWo5yU/D7d+Wmlo+7NeWmUBKO/UlzhHPf01Th3Ec1R7j2Z83VFvq/o7Vx8+bNpn///mbNmjXGGGNWr15tsrKyzKpVq4wx4dfG42lTIwx37tzJypUr+e1vf4vL5aJz585MnTqVV155JdihHaGgoIA+ffowbdo0nE4niYmJXH755axatYqPPvqIhIQEfvKTn2C32xkyZAg/+tGPQqody5Yt46OPPmLMmDGN20I97g0bNrBu3Truv/9+4uLiiImJ4d577+XWW28N+dgrKiooKioiEAhgjAHAarXicrlCMvY5c+Zw6623cssttxyy/Xixzp49m/HjxzNo0CAcDgdXX301iYmJvP/++0GPfc+ePUyaNImRI0ditVrp2bMno0ePZtWqVSEf+zeefPJJ0tPTad++/SHbgx37seJ+++236datG1OmTMHhcNCpUyeef/55xo0bFxJxN5VyU8tRbmpZyk3B79+Vm06d1p6bQk249SfNEc59T1OFcx/VHOHanzVXW+j/jtXGHTt24PP5Gvsii8WCzWbD6XQC4dXGpmhTBcO8vDwSEhJIS0tr3NazZ08KCgqorKwMYmRH6tGjB88++yw2m61x24cffkhWVhZ5eXn06tXrkP0zMjLYtGlTS4d5VCUlJdxxxx08/PDDuFyuxu2hHvf69evJyMjg9ddfZ/To0QwfPpwHHniA1NTUkI89MTGRq6++mgceeIC+ffty9tln061bN66++uqQjH348OEsWLCA888//5Dtx4t1y5YtQW/LsWIfO3Yst99+e+P3dXV1LFq0iKysLCC0YwdYvnw57733Hn/84x+PeC3YsR8r7vXr19OrVy/uuusuhg0bxrnnnss777xDenp6SMTdVMpNLUO5qeUpNwW/f1duOnVae24KNeHWnzRHOPc9TRXOfVRzhGt/1lxtof87VhuHDx/OgAEDuOKKK8jKymLSpEncdNNN9OvXDwivNjZFmyoYVldXH3KTADR+X1NTE4yQmsQYwyOPPMLHH3/MHXfccdR2REZGhkQbAoEAv/3tb7nmmmvo06fPIa+FctzQ8Mnl5s2b2bFjB3PmzOHtt99m//79TJ8+PeRjDwQCREZGcuedd7J27VrmzZvH1q1befzxx0My9tTUVOx2+xHbjxdrKLTlWLEfzO12M23aNCIjI7n66quB0I69pKSE3//+9zz00ENER0cf8XqwYz9W3BUVFbz11lv069ePRYsW8cQTTzBr1ixeeOGFkIi7qZSbTj3lpuBQbgp+/34w5aaTq7XnplATbv1Jc4Rz39NU4dxHNUe49mfN1Rb6v2O10ePx0KlTJ1544QXWrVvHP/7xD/72t7/x6aefAuHVxqZoUwXDqKgoamtrD9n2zfdH+8MNBW63m1//+te8++67vPzyy/Tu3RuXy0VdXd0h+9XV1YVEG/7xj3/gdDq56qqrjngtlOMGGocR33HHHcTExJCSksLNN9/M4sWLMcaEdOwLFizgww8/5Morr8TpdJKZmcm0adN49dVXQ/73frDjxRoObdm2bRuTJk3C5/Mxc+ZMYmJigNCN3RjDbbfdxlVXXUV2dvZR9wnV2J1OJ3379uWSSy7B4XDQp08fJk+ezPz584HQjftwyk2nnnJTcCg3hU5blJtaTmvJTaGmtfQnzdEa+p6mCrc+qjnCuT9rrrbQ//3tb3/D6XQydOhQHA4HI0aMYPz48cyaNQtoHW08WJsqGGZmZlJeXk5xcXHjtq1bt5Kenk5sbGwQIzu6Xbt2cfHFF+N2u3njjTfo3bs3AL169SIvL++Qfbds2UJmZmYwwjzE3LlzWblyJbm5ueTm5jJv3jzmzZtHbm5uSMcNDUOFA4EAXq+3cds3K3SddtppIR373r17G1eJ+4bdbsfhcIT87/1gx4s1MzMzpNuyePFiLr30Us466yyee+454uPjG18L1dj37t3LypUrefLJJxv/bgsKCrj77ruZMmUKELqx9+zZ84j3/cFzG4Vq3IdTbjr1lJuCQ7kpNNqi3NSyWktuCjWtpT9pjnDve5oqHPuo5gjn/qy52kL/V1BQcMg1GXzbF0HraOMhgrHSSjBdccUV5pZbbjFVVVWNK1E+/vjjwQ7rCOXl5WbEiBHmd7/7nfH7/Ye8VlpaanJzc80LL7xgPB6PWbZsmcnJyTHLli0LUrTHNn369MaVKEM9bo/HY0aPHm1uvPFG43a7TUlJifnpT39qpk2bFvKx5+XlmezsbPPUU08Zn89ndu3aZSZMmGDuv//+kI/94FWnjhfrN6vDLVu2rHHVqTPOOMOUlZUFPfY1a9aYrKwsM3v27KPuG8qxH27kyJGHrNwWSrEfHPeWLVtMdna2+b//+z/j8/nMpk2bzFlnnWVeeumlkIv7eJSbWpZyU8tQbioLeuzKTS2jteamUBLO/UlzhHPf01Th3Ec1R7j2Z83VFvq/g9v4+uuvm379+pklS5aYQCBgVqxYYXJycszChQuNMeHbxmNpcwXDoqIic+ONN5ozzzzT/OAHPzD333+/8fl8wQ7rCM8//7zp1auX6d+/vxkwYMAhX8YYs379enP55ZebnJwcc8455xzS4YSSg2/KjAn9uPft22duvvlmM2zYMJObm2tuu+02U1FRYYwJ/diXLl1qLr30UjNo0CAzYsQIM2PGDFNfX2+MCe3YD0+mx4v17bffNmPHjjUDBgwwl1xyiVm7dm1Lh9zo4NinTJlievfufcTf67XXXtu4f6jGfrjDL2KMCZ3YD4977dq15sorrzS5ublm+PDh5sknnzSBQKDx9VCJ+3iUm1qWclPLUW5qecpNLa+15qZQE679SXOEc9/TVOHcRzVHuPZnzdUW+r/D2zhz5kwzZswYk5OTY8aPH2/mzp17yP7h2MZjsRhzYHyoiIiIiIiIiIiItHltag5DERERERERERER+W4qGIqIiIiIiIiIiEgjFQxFRERERERERESkkQqGIiIiIiIiIiIi0kgFQxEREREREREREWmkgqGIiIiIiIiIiIg0UsFQREREREREREREGtmDHYCINM2oUaMoKirCbm/4szXG0LVrVyZPnsyll14a5OhERKQtUm4SEZFQorwkcvKoYCgSRu6++24mTpwIgMfjYdGiRdx+++2UlZVx/fXXBzk6ERFpi5SbREQklCgviZwceiRZJEw5nU7GjBnD9OnTeeKJJ3C73XzxxRf89Kc/Zfjw4fTt25eJEyeydu1aAK699lruvPPOQ44xZcoUHnvsMXw+H3/6058YNmwYgwcP5sorr2T16tVBaJWIiIQz5SYREQklyksiJ04FQ5EwN2LECOrr61m9ejW/+tWvGDt2LEuWLGHFihV06dKF//3f/wXg4osv5oMPPsDj8QBQXFzM0qVLmThxInPnzmXNmjXMnz+fzz77jDPOOIO77747mM0SEZEwptwkIiKhRHlJpPlUMBQJc4mJiQBUVFQwa9YsrrzySjweD3v27CEhIYH9+/cDcO6552K1Wlm4cCEA7777Ljk5OXTu3JnIyEjy8/N544032L59OzfddBPvvPNO0NokIiLhTblJRERCifKSSPNpDkORMFdaWgpAcnIyK1as4Be/+AU1NTVkZGRgt9sxxgANw/EnTJjA3LlzOe+885gzZw4///nPARg/fjxer5fZs2czY8YMkpOT+eUvf8kVV1wRtHaJiEj4Um4SEZFQorwk0nwqGIqEuYULFxIVFYXD4eDee+/ltddeIzs7G4Dnn3+e7du3N+578cUXc9lll7FmzRry8/MZO3YsANu3bycrK4uLLrqIuro6PvjgA6ZPn05ubi6ZmZlBaZeIiIQv5SYREQklyksizadHkkXClMfj4f3332fGjBnccssteDwerFYrkZGRAKxdu5aZM2c2zr8BcPrpp5ORkcE999zD+eefj8vlAuDjjz/mhhtuID8/n8jISBISErDb7cTGxgalbSIiEp6Um0REJJQoL4mcOIv5ZuytiIS0UaNGUVRUhN3eMDA4IiKCHj16MHnyZM4//3yMMTzwwAPMmTOHQCBAp06dmDBhAg8//DBLliwhJSUFgJkzZ/LnP/+Z1157jZycHAB8Ph8PPvgg7733Hm63m44dO3LTTTcxZsyYoLVXRERCn3KTiIiEEuUlkZNHBUORNuY///kPDz30EPPnzw92KCIiIoByk4iIhBblJRHNYSjSZpSVlbFv3z6eeuopTcwrIiIhQblJRERCifKSyLc0h6FIG7FhwwYmTZpEamoqkyZNCnY4IiIiyk0iIhJSlJdEvqVHkkVERERERERERKSRRhiKiIiIiIiIiIhIIxUMRUREREREREREpJEKhiIiIiIiIiIiItJIBUMRERERERERERFppIKhiIiIiIiIiIiINFLBUERERERERERERBqpYCgiIiIiIiIiIiKNVDAUERERERERERGRRioYioiIiIiIiIiISKP/B2OjDPtqhXHdAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1300x600 with 6 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "sns.set_style(\"darkgrid\", {\"axes.facecolor\": \".9\"})\n",
    "sns.set_context(\"paper\")\n",
    "\n",
    "SMALL_SIZE = 10\n",
    "\n",
    "plt.rc('font', size=SMALL_SIZE)          # controls default text sizes\n",
    "plt.rc('axes', titlesize=SMALL_SIZE)     # fontsize of the axes title\n",
    "plt.rc('axes', labelsize=SMALL_SIZE)    # fontsize of the x and y labels\n",
    "plt.rc('xtick', labelsize=SMALL_SIZE)    # fontsize of the tick labels\n",
    "plt.rc('ytick', labelsize=SMALL_SIZE)    # fontsize of the tick labels\n",
    "plt.rc('legend', fontsize=SMALL_SIZE)    # legend fontsize\n",
    "plt.rc('figure', titlesize=SMALL_SIZE)  # fontsize of the figure title\n",
    "\n",
    "# create figure\n",
    "fig, ((ax1,ax2,ax3), (ax4,ax5,ax6)) = plt.subplots(nrows=2, ncols=3, figsize=(13,6))\n",
    "\n",
    "# START OF SEASON\n",
    "ax1 = sns.histplot(data= data_all_rice, x='doy_SOS', kde = True, bins=11, hue='Class_name',ax=ax1)\n",
    "ax1.set_title('START OF SEASON',fontweight =\"bold\")\n",
    "ax1.set_xlabel(\"Accumulated DOY\")\n",
    "ax1.set_ylabel(\"Number of Samples\")\n",
    "ax1.legend_ = None\n",
    "ax1.set_ylim(0, 225)\n",
    "#ax1.set_xlim(data_all_rice.doy_SOS.min(), data_all_rice.doy_SOS.max(),10)\n",
    "\n",
    "# PEAK OF SEASON\n",
    "ax2 = sns.histplot(data= data_all_rice, x='doy_POS', kde = True, bins=11, hue='Class_name',ax=ax2)\n",
    "ax2.set_title('PEAK OF DpRVI',fontweight =\"bold\")\n",
    "ax2.set_xlabel(\"Accumulated DOY\")\n",
    "ax2.set_ylabel(None)\n",
    "ax2.legend_.set_title(None)\n",
    "ax2.legend_ = None\n",
    "ax2.set_ylim(0, 225)\n",
    "\n",
    "#END OF SEASON\n",
    "ax3 = sns.histplot(data= data_all_rice, x='doy_EOS', kde = True, bins=11, hue='Class_name',ax=ax3)\n",
    "ax3.set_title('END OF SEASON',fontweight =\"bold\")\n",
    "ax3.set_xlabel(\"Accumulated DOY\")\n",
    "ax3.legend_.set_title(None)\n",
    "ax3.set_ylabel(None)\n",
    "ax3.set_ylim(0, 225)\n",
    "\n",
    "#INCREASE SEASON\n",
    "ax4 = sns.histplot(data= data_all_rice, x='Increase', kde = True, bins=11, hue='Class_name',ax=ax4)\n",
    "ax4.set_title('INCREASE LENGTH',fontweight =\"bold\")\n",
    "ax4.set_xlabel(\"Days\")\n",
    "ax4.set_ylabel(\"Number of Samples\")\n",
    "ax4.legend_.set_title(None)\n",
    "ax4.legend_ = None\n",
    "ax4.set_ylim(0, 225)\n",
    "ax4.set_xlim(0,160,20)\n",
    "\n",
    "#DECREASE SEASON\n",
    "ax5 = sns.histplot(data= data_all_rice, x='Decrease', kde = True, bins=11, hue='Class_name',ax=ax5)\n",
    "ax5.set_title('DECREASE LENGTH',fontweight =\"bold\")\n",
    "ax5.set_xlabel(\"Days\")\n",
    "ax5.legend_.set_title(None)\n",
    "ax5.set_ylabel(None)\n",
    "ax5.legend_ = None\n",
    "ax5.set_ylim(0, 225)\n",
    "ax5.set_xlim(0,160,20)\n",
    "\n",
    "#SEASON LENGHT\n",
    "ax6 = sns.histplot(data= data_all_rice, x='Total_Lenght', kde = True, bins=11, hue='Class_name',ax=ax6)\n",
    "ax6.set_title('LENGTH OF SEASON',fontweight =\"bold\")\n",
    "ax6.set_xlabel(\"Days\")\n",
    "ax6.legend_.set_title(None)\n",
    "ax6.set_ylabel(None)\n",
    "ax6.set_ylim(0, 225)\n",
    "#ax6.set_xlim(data_all_rice.Total_Lenght.min(), data_all_rice.Total_Lenght.max(),10)\n",
    "\n",
    "fig.tight_layout(pad=1)\n",
    "\n",
    "plt.rc('legend', loc=\"upper right\")\n",
    "#plt.savefig(\"C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\data\\data_all_clean.svg\", format='svg')\n",
    "#Total_Lenght"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+AAAAGICAYAAADBH4pjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADxqElEQVR4nOzdd3xUVdrA8d+dnsykVyB0CCC9C2IBqSriiqCuunbdYl9d61rWxfbadVdcRbGvgrIrCCg2XBUQkN47oaTXmWT6ff8YMhCSkEwyLcnz9TMf4sy95zwzmTm5z5ymqKqqIoQQQgghhBBCiJDSRDoAIYQQQgghhBCiLZAEXAghhBBCCCGECANJwIUQQgghhBBCiDCQBFwIIYQQQgghhAgDScCFEEIIIYQQQogwkARcCCGEEEIIIYQIA0nAhRBCCCGEEEKIMJAEXAghhBBCCCGECANJwNu43bt3h7wOr9fL3r17Q16PEKJ1CFa7FI72zel0kpOTE/J6hBAiGkkbKETgJAEH5s2bx+DBgykrK2vw2Msuu4x77733lMdcddVV9OrVi02bNgUrxIDdd9999OrVi6VLl9Z7zN13383MmTObVc+nn37KmWeeycCBA7nqqqtqPb5jxw4uvPBC3n//ff99wX593G43r7zyCpMmTaJfv36cfvrp/O53v2PFihVBKV+ItujEdvGzzz6jV69e/O1vf6vz2D179tCnT58GP3M//fQTV155JUOGDGHQoEGcd955zJ49G7fb7T8mGO2S1Wrlpptu4s4772xWObNnz+b0009n8ODB3H333bUeX7lyJZMmTeKrr77y3zdu3Dh69epFcXFxs+quZrPZmDVrFuPGjaNfv36MGTOG3//+92zZsiUo5QshAhPsa8bqNqOu2yuvvNLkOBtqtxtD2kAhQkMX6QAiraSkhKeeeoqLLrqIhISEBo+/5ppruP3225k2bRqjR48OQ4Shs3DhQmJjY5tVxnvvvUd+fj4zZsxg4MCBtR7fsmULu3btYsSIEc2q51Sef/555syZw6BBg5gyZQolJSUsWLCAG2+8kXnz5tGnT5+Q1S1EaxRou9i9e3fOOussHnroIZYuXYper691zI4dO7jxxhuJj49n+vTpxMbG8uWXX/LCCy9QUVHBPffcAwSnXSotLWX58uX07NmzWeXMmTOH8vJyrrvuOgYNGlTr8dWrV3PkyJFm1dGQBx54gKVLlzJmzBimTZvG0aNH+e9//8vatWtZtGgRGRkZIa1fCHFcKK8Zb775ZkwmU437hg8f3qx4m0vaQCFCo833gL/33ntYrVZ+85vf+O/717/+5f+mbcSIEdx2222UlpYCvm/24uPjee2115pV76JFi7jgggsYMGAAF1xwAV9//bX/sere6//85z9cdtllDBw4kIsvvphff/3Vf8ymTZu47LLLGDRoEJdddhnvvPNOnd+W7t27l8svv5xBgwYxY8YMf6/zuHHjAKisrKRXr16sWrWqzji/+OILLr74YgYMGMC5557LrFmzsFqt/jK2bdsG+L4Rzs3NrXHuqlWruP/++wH44IMP/HVWW7duHRdeeCGDBw/md7/7XY0hTD/99BPTp09n4MCBjB8/no8//rje13LDhg0APPjgg9xxxx089thjPPLII5xxxhkcOnQIAFVVeeedd5g4cSL9+/fnkksuYc2aNTVep2uvvZahQ4fSv39/Jk+ezKJFi/yPz507lwkTJtC/f39GjRrFPffc438dwPdFw/XXX8+QIUMYPXo0t9xyCwcOHPA/Xt3r//XXXzN16lQGDx7MFVdcwZ49e+p9XkJESl3tIvguPv/whz8wcOBALrjgAr799lv/Y9OmTePQoUMsXLiwzjI3bdqEx+NhypQpPPjgg9x555289dZbnHPOOVRWVgJ1t0sej4ennnqKM888k379+jFq1CgeeughnE4ncPyz9X//938MHz6ca6+9lnPPPReAXbt20atXL387cCJVVXn//fc577zzGDBgAJMmTeLVV1/1l9urVy/Ky8sBeOutt7DZbDXO/+yzz3j11VcBeOaZZ2qNAPr222+ZOHEiw4YN4w9/+AMlJSX+x07V/p9sw4YNaDQann76aW6//Xaeeuop7rzzToYMGeJ/Xk6nkxdffJFx48YxYMAArr76anbt2uUvY926dVx22WUMHjyYAQMGcNFFF/lHK3i9Xp5//nnOOeccf+/S3//+d1wul//8n376yf935KyzzuK+++6joKDA//i4ceMYNmwYS5cuZcKECQwZMoQbbriBwsLCep+XEC1RXW3jpk2buPrqqxk2bBgjR47krrvu8vf+BnLNOH78eM4///wat8GDBwONuy7cuHEjl156KYMGDWLmzJk12oC6SBsobaCInDafgH/xxRckJyczYMAAAL788kuee+45EhMTuf766+nWrRtffvmlfwi1wWBg1KhR/PLLL+Tl5TWpzuXLl/PnP/8Zt9vN1Vdfjaqq3Hrrraxbt67GcX/729/o1asX/fr1Y8uWLcyaNQuA8vJybrzxRtavX8+kSZPo1q0bzz77bJ11zZ49m969ezNw4EA2btzoL+O6664DQK/Xc/vtt5OVlVXr3M8//5y77rqLvLw8rrjiCrp06cK7777L7373O9xuN9dddx0pKSn+8k4//fQa52dlZTFx4kQABg4c6K+z2j/+8Q9GjhxJ165dWbVqFS+++CIA27dv56abbiI/P5+rrrqK1NRUHn74YRYvXlznc6yu47e//S3XXHMNr776Kp07d2b27NlMmDABgA8//JAnnniC+Ph4rrnmGgoLC7nhhhv8Sf/tt9/O6tWrmTp1Kr/97W85fPgwDzzwAE6nk19++YUnn3wSi8XCjTfeyIABA/j888955plnAF/yfuWVV7Jq1SouuOACxo4dy3fffccll1xS68L/4YcfZuTIkXTs2JE1a9bw0ksv1fmchIikk9vFaosXL0av1zN9+nT279/Pbbfd5v8S6ayzzkJRlBpfXJ1o1KhRxMXF8eGHHzJlyhQee+wx1q1bx7PPPssjjzwC1N0uvfPOO7z99tt06dKFG264gZSUFObNm8cXX3xRo/zPP/+cSy65hAsvvNBfTkpKCrfffnudPVWvvfYajz/+OC6Xi6uuuoqkpCReeeUV7rjjDsDXJlT35N9+++2cdtppNc4/7bTTGDlyJABnnnkm06dPr/H4K6+8wtixY0lJSeHbb7/l7bffBhrf/lebOHEiXq+X8ePHc/PNN/PGG28wevRoXn/9dYYOHQrACy+8wGuvvUanTp248sor2b59O9deey0VFRU4HA7++Mc/snPnTmbOnMlFF13E9u3befDBBwH473//y+uvv07Hjh256aab6NSpE++99x5vvfUW4OvhuvHGG9mxYwczZsxgyJAhLFiwgJkzZ1JRUeGP02az8fTTTzN27FiSkpL43//+x5w5c+p8TkK0VCe3jbm5uVx99dWsX7+eiy66iJEjR/LFF19w1113AYFdM86YMYOJEyfWuJ3csVHfdWFJSQk33ngjGzZsYOLEifTq1Yt33333lPVJGyhtoIggtQ3Ly8tTs7Oz1auvvtp/n8vlUnft2qUWFhaq27dvV5966ik1OztbfeCBB/zHvPrqq2p2drb6+eef11nulVdeqWZnZ6sbN26s8/Ebb7xRzc7OVr/66it1//796vfff69mZ2erd999t6qqqnrvvfeq2dnZ6ssvv6yqqqoWFRWp2dnZ6pAhQ1RVVdXPP/9czc7OVu+66y5/mQ8//HCNc6rLeOWVV1RVVdWKigo1OztbHTZsmP+c7OxsddCgQfW+PlOmTFGzs7PVTZs21Xpu33zzjaqqqnr++eer2dnZak5OTp1lfPrpp2p2drb62GOP1Srjs88+U1VVVbdt26ZmZ2er06ZNU1VVVR999FE1Oztbfe+999T9+/erW7duVXv16qVefvnl9cY6b948dfr06Wrv3r3V7OxsNTs7Wz3vvPPUgwcPqqqqquedd56anZ2tbtiwQd2/f7/673//W83OzlZfeOEF/2u8Y8cOtaioSF2+fLk6duxYNTs7Wz169Kj666+/qtnZ2eqMGTPUTz/9VN2zZ4+6b98+1e12q6qqqo888oianZ2tzpkzxx/PK6+8omZnZ6tPPvlkjef86aefqqqqqhs3blSzs7PVqVOn1vuchIiEutrF6s/xFVdc4b/vueeeU7Ozs9VXX33Vf9+5556r9uvXT/V4PHWWvX37dvW2225TBw8e7P+cDhw4UJ03b57/mJPbJYfDoW7dulUtKytTN23apP7lL39Rs7Oz1X/84x+qqh7/bM2fP99/Tk5Ojpqdna2ef/75dcbhcrnUIUOGqH379lVzc3P9902cOFHNzs5Wt2/frqqqqg4aNEjNzs6u97V6+eWX1ezsbPXNN9/031fddqxatUpVVVX9+uuv1ezsbPWPf/yjqqoNt/91xTpnzhz1ggsu8L9m2dnZ6qWXXqqWlJSoXq9XHTRokDpkyBB19+7d6v79+9WXXnpJzc7OVj/55BNVVVU1NzdX3bt3r5qbm6suW7ZMHTJkiNqnTx9VVVV14cKFanZ2tnrdddepixYtUvfu3avm5OSoXq9XVVVVveGGG9Ts7Gx16dKl/pjuu+8+NTs7W3333XdrPOeVK1eqqqqqS5YsUbOzs9Xf//739b52QrQ0dbWNr7/+eo1rLY/Ho37wwQfqjz/+6P8MNXTNWP35mT9/vrpkyZIat8rKSlVVG74uXLBggZqdna3++c9/9pf7t7/9rdb1VzVpA6UNFJHVpueAV38bmZyc7L/ParXyj3/8g++//56UlBQyMzMB8Hg8/mOqj29qD3h1r+gtt9xS4/7t27fX+P9u3boBkJSUBPiGyQAcPXoUgB49eviP7d27d511VZdhsVgAaix21JCcnBy0Wi19+/b139e/f39++eUXDh8+3Ohy6tO9e/c6Y6t+fR5//PEax5/8+lRzOp2MGzeOSy65hLKyMn799Vc+/PBDfvjhB5599lleeuklf5kzZsyos8yVK1fy8ssvk5eXR9++ff1DsNxuN4MHD2bWrFm88847/iH1HTt25J577mHSpEn+XvQTewv79+8PUOt1qv59JCYmAsd/p0JEi7raxWpdu3b1/1z9+T1xGF5ycjI5OTmUlpbWOt/r9ZKWlsb//d//odFo2Lp1Kz/88AOvvfYajz32GBMmTKizp7qwsJDnnnuOX375haysLMxmM1CzTQbo3Llzo59jSUkJVquVjh07+ucP6nQ6evfuzf79+zl8+DC9evVqdHl1aah9a6j9r+Z2u/nNb37DddddR0FBAWvXruXtt99m3bp1/Otf/+L666/3D+E/77zzapy7Y8cOAL766iveeustKioq6N+/P16v1//6XXDBBRw5coT58+f7e+169erFQw89xIgRI+ps3/r168dnn30m7ZtoU+pqG6vnP3fq1AkAjUbDb3/72xrnNfaacezYsXW2uyeq77qwuh0+8brwxJ9PJm2gtIEistp0Aq6qKlAzKX3iiSdYvHgxzz//POeffz5Llixh9erVdZ6v1WqbVG96ejp79uzh/vvvJzMzE6vVSn5+fq0kurp8RVFqnQ81t9ipr+HSaE49y6D6NahLVlYWe/fuZdu2bf6hR9WrTlb/sWlIdex11XPy86pW/fxuvvlmTjvtNFwuF/v27atx8V/NZrMxcuRIdDodX3/9NampqYwdO5bExER++OEH/5cV6enp5OTk8PTTT2M0GikqKsJmszFw4EAOHjzIXXfdRXZ2NqtWrUKv1zN16lT/H7TDhw8THx/Ps88+S1paGuvXr+eee+7hnnvu4dxzz/UP39+8eTPDhg3z/wy+RP1E9f1OhYgWdbWL1bZv346qqiiKwr59+wBo3759rePqanfuueceFi1axF//+leuvPJKBgwYQP/+/Vm0aBH79u2jsLDQn4Cf2F7cc889rFmzho8//phBgwbx5ptvsnHjxlrlG41G/8+nanfAd/FqNpvJy8ujoKCAtLQ03G63vx0NdfvWmPYfYN++fUyePJl27dqxZMkS0tLSmDx5Mm63m/Xr13P06FESExMxGAwYjUYef/xxFEXxD1sdOnQoK1as4O9//ztnn302r732Gh6PhzFjxvjr2Lt3L1lZWbz11lvo9Xp++eUX7rnnHh566CG++uorsrKy2LdvH5s3b6Zdu3bA8b8D0r6JtqSutrG6/Ttxq9Unn3wSvV7PrbfeWqNdauo144nq+4xVfzZPvC481RxwaQOlDRSR1aYT8A4dOgDUWCSh+tuquXPnsmXLFhYsWADg7xEF/ItrVJ9fn3/961/+bymrXXvttcycOZMVK1Ywf/58xo0bx8qVK9mwYQO33357rYXK6nLuuecSHx/P4sWLMRgMgG/+Y6DMZjOVlZU88cQTXHzxxbUav+uuu46HHnqIm266iQsvvJBdu3axcuVKBg0aVKPxaqgOgBUrVvDiiy/65xadyowZM/j0009ZtGgRqqqydetWfvzxRy655BKmTp1aq/yLL76Yjz/+mJkzZzJ58mRUVfXPD500aRIAM2fO5Nlnn+Wjjz5ixIgRfPPNN+zevZtnnnmGjIwMVFVl//79PP300xw+fNj/h8vpdLJ7925uvfVW0tPT+c1vfkNZWRk2m41OnTqh0+n47W9/y4IFC3j22WfZu3cvXq+XBQsWkJiYWOfWbEJEs7raxWpbt27lhhtuoGvXrnzyySeYTCbOP/98/+PFxcVYLJY6e7Ivv/xyli5dylNPPcXmzZvJzMzk119/Zd++ffTq1cv/BdvJ7VJ1m/zyyy/To0cP5s2bB9Rsk09W3e4cPnyYp59+mmuuuabGSrk6nY6rrrqK2bNnc8UVVzBx4kTWrl3L/v37mTx58il7juqq56uvvkKj0dRa56IugbT/Xbt2ZcyYMfz444/MnDmTsWPHYrPZ/AvdTZo0Ca1Wy/Tp0/noo4/49NNP6d27N4sWLSI3N5f333/ff2G8fv16/u///o9Nmzb5t09yOp0sX76cp556iq5duzJ58mRycnJQVdX/Prjmmmv46aefuO+++1i9ejWFhYUsXryYjh07Mm3atEa9TkK0BnW1jRdeeCGzZ8/2966WlpayaNEiRowY4U++G3vNOHfu3FqroHft2pUpU6Y0GNs555xDamoqCxcuRFEUjEYj//3vf+s9XtpAaQNFZLXpRdhSUlLo2rUre/fu9X9A77zzTkaMGMHOnTtZuHAhF110EUajsUaPy/bt21EUhSFDhpyy/K+++oqPP/64xi0/P5/zzjuPhx9+GKfTyVtvvUV+fj633HILv//97xsVd1xcHK+99ho9evRg4cKFHDp0iOuvvx5ouMf7RL///e+Ji4vjs88+q3No1IwZM/i///s/0tPTef/999mzZw/XXnstb731VqO/yR09ejQjRozg8OHDfPHFF6fsca82aNAgXnzxRcxmM2+//Tbbtm3jyiuv5OGHH67z+L/+9a/cddddxMTE8NFHH/Hhhx+SlJTEgw8+6H9drr/+em699Vby8vJ46623cLlcPPzww0ybNo0uXbpw//33Ex8fz6effkppaSmTJ08GfKuKTpw4kSeffJLExETeeecdli5dyjnnnMPs2bMB31Cl999/n5EjR7Jo0SK++eYbzj33XObPn+//tlSIlqKudrHajTfeiNlsZv78+XTp0oXZs2f7L1KsViuHDh1iyJAhdX77P2zYMN58802GDRvG8uXLefPNN9m/fz/Tp09nzpw5/rbr5Hbp4Ycfpl+/fqxZs4avv/6ayy+/HKDOXvBqiYmJXHnllSiKwmeffVZj9d1qt99+Ow8++CB6vZ53332X4uJi7rjjjnoXtKzLlClT6Nu3L1u3buX7779v1DmBtv8vvfQSN954I06nk7lz5/LZZ5/RuXNnnn32WX87df/993PVVVexbds25s6dS1xcHM8//zzDhg1j9OjRXH/99SiKwrx58zCZTJxxxhmA7zW89tprueeee1BVlTlz5rBy5UouuOACnn76aQDGjBnDv/71L3r16sUnn3zCmjVr+M1vfsMnn3ziH1oqRFtQV9uYmZnJO++8w6BBg/jPf/7DTz/9xAUXXOBfVBYaf834+uuv89JLL9W41berxMksFgtvvvkmQ4YMYdmyZezevZsHHnjglOdIGyhtoIgcRW1MRtSKvfbaa7z44ot8+umn9OvXr8HjPR4Po0ePpn///rz55pthiLC2o0eP8u2339KpUyfOPPNMAN544w2effZZ//BOIYRoqkDbRYBly5Zxyy238MILL9SahyeEEK1BS7xmFEJEnzbdAw6+YZFxcXEsXbq0Ucf/9NNPlJaW+ntWI8FoNPL0009zww038PDDD/PMM8/w5ptvotfr/d/qCSFEUwXaLoJvi7JOnTr5t/4TQojWpiVeMwohok+bT8ATExO55557+Pjjj7FarQ0eP2fOHKZOncqoUaPCEF3dkpOTeeGFF+jTpw8LFizg3XffJT093T+HRQghmiPQdjEnJ4evvvqKxx57zL9vrBBCtDYt8ZpRCBF92vwQdCGEEEIIIYQQIhzafA+4EEIIIYQQQggRDpKACyGEEEIIIYQQYSAJuBBCCCGEEEIIEQaSgAshhBBCCCGEEGEgCbgQQgghhBBCCBEGkoALIYQQQgghhBBhEPEEvLi4mAkTJrBq1Sr/fV988QVTpkxhyJAhTJo0iY8++qjGOQsWLGDChAkMGjSIiy++mHXr1oU7bCGECBlpF4UQojZpG4UQrYIaQWvWrFHHjx+vZmdnqytXrlRVVVV37NihDhw4UF23bp2qqqq6du1atW/fvurq1atVVVXVlStXqoMHD1bXrFmjOp1O9e2331ZHjhypVlZWRuppCCFE0Ei7KIQQtUnbKIRoLSLWA75gwQLuvvtu7rzzzhr379+/H7fbjdfrRVVVFEVBq9ViMBgAmDdvHueffz5Dhw5Fr9dzzTXXkJSUxOLFiyPxNIQQImikXRRCiNqkbRRCtCa6SFU8ZswYpk6dik6nq9GgjhkzhkGDBnH55Zej1WrxeDzce++9DBgwAIDdu3czffr0GmX16NGD7du3hzV+IYQINmkXhRCiNmkbhRCtScR6wNPS0tDpauf/TqeTrKws3n77bTZs2MDrr7/OK6+8wo8//giAzWYjJiamxjkmk4nKysqwxC2EEKEi7aIQQtQmbaMQojWJWA94fV555RUMBgOjR48G4JxzzuH888/n448/ZsyYMcTExGC322ucY7fbSUpKalJ9paWluN3uZscdLIqikJKSQlFREaqqRjocP4krMBJXYKI1Lp1OR2JiYqTDaPPt4omi9b1yIokxOCTG4AhFjFqttsntSzCFu20sKSnB4/E0eFyk3heRfD+2tefc1uqNZN0tpd5A2sWoS8CPHDlS64JXp9Oh1+sB6NmzJ7t27arx+O7duznrrLOaVJ/b7cblcjXp3FBQFAUAl8sVVX/MJa7ASFyBida4okVbbxdP1BLeKxJjcEiMwRGKGKPluUaibWzMl5ORel9E8v3Y1p5zW6s3knW3lHoDiS3i25CdbNy4cSxevJj//e9/qKrKL7/8wueff87UqVMBuOSSS1i4cCErV67E5XIxd+5cioqKmDBhQoQjF0KI0JB2UQghapO2UQjREkVdD/iMGTOw2+38/e9/p6CggPbt2/Poo48yduxYAEaNGsUjjzzCo48+Sl5eHj169OCNN96IimGiQggRCtIuCiFEbdI2CiFaoqhIwHfs2FHj/6+66iquuuqqeo+fNm0a06ZNC3VYQggRMdIuCiFEbdI2CiFauqhIwIUQQgghhBCitVNVtclzmRVFwePx4PV6IzIHPBJ1R0u9iqL454U3lyTgQgghhBBCCBFCXq+XsrKyZu8y0tjV+EMhUnVHS706nY6EhAQ0muYtoyYJuBBCCCGEEEKEkM1m829t1Rx6vT5iO5VEqu5oqbe8vBybzUZcXFyzypUEXAghhBBCCCFCRFVV7HY7iYmJze491Wg0zS6jpdUdLfWazWZKS0uxWCzNGo4edduQCSGEEEIIIURrUT13WavVRjgS0RzVv7/mzkWXBFwIIYQQQgghhAgDGYIuhBBCCCGEEBEQ6FDm5qzGHe6V00XdJAEXQgghhBBCiDBLTUtDrwtfOuZyuyksKAhbfc1x6NAhsrKyIh1GSEgCLoQQQgghhBBhpCgKep2OF5dsxOFu/BZbGo0WrzfwLbmMOi13TBmAoiiN6gl/7rnnWLZsGQAejwe3243JZPKf+8wzzzBgwICA46h29OhRLr/8cj766CPatWvH5MmT/WW+9tprlJaWcv/99wMwfvx4nn766WbV1xhPPvkkgL/eUJEEXAghhBBCCCEiwOH24HR7G328RqPg9Tb++Kb685//zJ///GcAlixZwty5c/nss89Cth3Y0qVL/T+XlpbWeOzrr7+O2NZroSAJuBBCCCGEEEKIRqnuvZ45cyaLFy9m/Pjx/OlPf+LNN99kxYoVFBQUYDQaGTt2LLfddhuKolBZWclLL73Ejz/+SExMDBdeeGGNMs855xxeeOEFNm3axNdffw3A7t27mTNnDmeccQYvvPACgwcPpqysjDfeeIOff/4Zt9vNaaedxi233EJWVpY/rnvuuYd3330Xq9VK7969uffee0lPT0dVVT766COWLVtGfn4+iqJw+umnc88992A0GsP2+kkCLoQQQgghhBAiIJWVlSxYsAC73c78+fNZtWoVL7zwAikpKWzZsoXbbruNMWPGMHToUF588UUOHz7M+++/j0aj4fHHH6+zzN/97nccPnwYqHso+MMPP4xWq+WNN97AYrEwZ84c7rrrLt5++23/MStWrODNN9/E5XJx991389577/HnP/+Z77//nvnz5/Pyyy+TlZXFgQMHuPXWW/n66685//zzQ/Mi1UG2IRNCCCGEEEIIEZBJkyah1+uJi4vjggsu4Pnnnyc5OZmioiIcDgexsbEUFhbidDr57rvvuPbaa0lKSiIhIYHf//73Add35MgRNmzYwG233UZKSgpGo5Gbb74Zt9vNypUr/cddfvnlxMXFkZyczOjRozl06BAAI0eOZPbs2WRlZVFaWkpZWRkJCQkUFhYG7TVpDOkBF0IIIYQQQggRkNTUVP/PVVVVvPTSS2zYsIG0tDSys7NRVRWv10t5eTkul4v09HT/8e3btw+4vpKSEgDatWvnv0+r1ZKRkUFubi6nnXYaAMnJyTUer54z7/V6mTNnDj///DOJiYn06NEDp9MZljn1J5IEXAghhBBCCCFEkz377LPEx8fz6aefYjQa8Xq9TJ06FYCEhAQMBgNHjx6lU6dOABQ0YTu0zMxMwNcT3rVrV8C3Qntubi4pKSkNnv+vf/2LvLw8/v3vf2M2mwG49tprA46juWQIuhBCCCGEEEJEgFGnxaDThPxm1GlD+jxsNhsGgwGtVktlZSWzZ8/GZrPhdrvR6/VMmjSJOXPmkJ+fj9Vq5fXXX6+3LIPBgM1mq3V/SkoKp59+Oq+88op/mPvrr7+O1+tl9OjRAcXocDj4+OOP2bdvH263u1nPPVDSAy6EEEIIIYQQYaSqKi63mzumhHZv6xO53O5G7QHeFLfddhvPPfccF1xwAWazmdNPP50RI0awd+9eAG655Rb++c9/ct1116HT6Zg+fTo///xznWWNGzeOxx57jJkzZ/LJJ5/UeOyBBx7g9ddf56abbqKqqorTTjuNF154gfj4+DqT9hNdf/31PP3001x00UXExMQwYMAAJk6c6I8xXBQ1VL+FFqKwsDCq9pVTFIXMzExyc3ND9gFpCokrMBJXYKI1Lr1eX2N+U1sRbe3iiaL1vXIiiTE4JMbgCEWMOp2OtLS0oJTVkhQUFDSqpyxS74tIvh/b2nMOtF6v10tRUREpKSloNDUHICuKElDder2+yX+jm/saNafu1lDvqX6PgbSL0gMuhBBCCCGEEBEQaFKsqmrUfuEnGkfmgAshhBBCCCGEEGEgCbgQQgghhBBCCBEGkoALIYQQQgghhBBhIAm4EEIIIYQQQggRBpKACyGEEEIIIYQQYSCroIuo1tDWDNWPN3YLB1k1UgghhBBCCBEpkoCLqJWeloJWZ2jUsRkZGY06zuN2kl9Q1JywhBBCCCGECIpA9wFXFCXgc6pJR1R0kARcRCVFUdDqDFiXPYXqdtR/HAoWsxmrzYbKqRsVRWfEMuE+FEWRBkgIIYQQQkRUIJ1NwSAdUdFBEnAR1VS3A06RgIMCHv2xY06dVEvKLYQQQgghokFjO5tOptVo8Xg9gdfXhI6oc845B4B3332XTp061Xjsk08+4Z///CdXX3011157bcDxrFu3jjvvvJPvv/8+4HNbOlmETQghhBBCCCEiwN/ZFOJbIEn+iRISEli6dGmt+5csWYLZbG7u02+TpAdcCCGEEEIIIUQt48eP56uvvuKGG27w37dt2zbcbjc9evTw3+f1evnoo4/44osvKCsro2PHjlx33XWMGDECgKKiIp577jnWr19PQkIC48aNq1HP4cOHefXVV9myZQsxMTFMmDCBq6++Gr1ezxdffMH8+fOJj49n27Zt3HnnnSxcuJC+ffuyefNmdu7cSXp6Otdeey1jx44NzwvTDNIDLoQQQgghhBCillGjRuF2u1m7dq3/vsWLF3PeeefVOO6dd97hP//5D48++ij//e9/ufTSS3nwwQfZvn07AI899hharZb58+fz0ksvsWrVKv+5VVVV3HXXXXTt2pV58+bxyiuvsHbtWt5++23/MTt37mT8+PEsWLCAM888E4BFixZx6623snDhQs466yyeffZZHI6m9fSHkyTgQgghhBBCCCFq0Wq1jB8/3j8M3eFwsHz5ciZOnFjjuCVLlnDFFVeQnZ2NTqdj7NixnHHGGXzxxRfk5uayceNGbr75ZmJjY0lPT+eaa67xn7ty5Urcbjc33ngjRqOR9PR0rrvuOv7zn//4j9Hr9UycOBGDwYDRaATg7LPPpmfPnuj1eiZPnozNZqO0tDTUL0mzyRB0IYQQQgghhBB1mjJlCn/84x+x2WwsX76c/v37k5KSUuOYkpIS2rVrV+O+du3asXv3bgoLCwFIT0/3P9a+fXv/z7m5uZSUlHDBBRfUON/lclFSUgJAcnIyGk3NvuPk5GT/z1qtFvANhY92koALIYQQQgghhKhT9+7d6dSpE9988w1fffUVl1xySa1jMjMzOXLkSI37Dh8+TEpKCmlpaQAcPXqUzp07A1BQUOA/Li0tjQ4dOvDee+/576usrKS4uJjExMQQPKPIkiHoQgghhBBCCCHqNWXKFD7++GNycnIYOXJkrcfPP/98PvzwQ3bu3InH4+H777/n559/ZvLkyWRkZDB8+HD+8Y9/UFFRQVFREXPnzvWfO2rUKKqqqvj3v/+N0+mkoqKCJ554gr/97W8oihLGZxke0gMuhBBCCCGEEBGg6Iw0blfuYzRaaOI+4M1x7rnn8tprr3HJJZeg09VOIWfMmIHH4+Gxxx6jqKiIrKwsHn74YQYNGgTAX//6V1544QUuvfRSYmNjmTJlCtu2bQPAbDbz3HPP8c9//pOPPvoIr9fL4MGDmTVrVrNijlaSgAshhBBCCCFEGKmqisftxDLhvrDV6XE7UdXGp/vff/+9/+eEhAS+//57XC6X/76XXnrJ/7NWq+WKK67giiuuqLOs+Ph4HnnkkRr3XX/99f6fO3fuzNNPP13nueeff36tRd9OrBt8881PjDeaSQIuhBBCCCGEEGGWX1AU8BBrvV5fIwkORCDJtwgdScBFy6d6QVWh9U0REUIIIYQQrVigSbGqqpJIt3CSgIuWS/ViOLQCirdjVlWc6QNwthsOrXCxBiGEEEIIIUTLJwm4aJlUFdPer9CX7gFzGqrbifHoagCc7UdEODghhBBCCCGEqC3i25AVFxczYcIEVq1a5b/vkUceoV+/fgwePNh/+/jjj/2PL1iwgAkTJjBo0CAuvvhi1q1bF4nQRQTpCzajL92DK6kHDLmGyj6X4YlNw3h0NRpbXqTDE6JZpF0UQojapG0UQrQGEe0BX7t2Lffddx8HDx6scf+mTZt4/PHH+c1vflPrnFWrVvH444/zxhtvMGDAAD744AP+8Ic/8N133xETExOu0EUEKU4rxsM/4zXE4eg8Dr1GC1o99i7jid36EcYjv1DVc2qkwxSiSaRdFEKI2qRtFEK0FhHrAV+wYAF33303d955Z437nU4nO3fupF+/fnWeN2/ePM4//3yGDh2KXq/nmmuuISkpicWLF4cjbBEFDLm/onjd2DueCVqD/35vTDLu5J7oyg9KL7hokaRdFEKI2qRtFC1d9UrnHk/g+3eL6FH9+wt05fqTRawHfMyYMUydOhWdTlejQd2+fTtut5uXX36ZtWvXEhcXx/Tp07nhhhvQaDTs3r2b6dOn1yirR48ebN++vUlxKIrS7BcxmKpjiaaYIPxx+etD4cTlzRWnFX3hFjyxGXgTuh5/SAFFVXBlDEZfvAt90Q6c5syTS61Rdljib+O/x8aK9rjCRdrFhkXre+VEEmNwSIzBEYoYpW1s+LgT/w2XSL4f29pzDrReRVEwmUzYbDbi4+ObVbfX68Xr9TarjJZWd7TUa7PZMJlMaDS1+7ADeQ9GLAFPS0ur8/6KigpGjBjBVVddxfPPP8+2bdv405/+hEaj4YYbbsBms9UaNmQymaisrGxSHCkpKU06L9QyMjIiHUKdwh2XxWwGj/74HXvXgOpF2+1MLHFxJxxn8f1gNsOBVAwluzH0ngwa7fFzj/WWh/M5yO8xMNEaV7hIu9h4LeG9IjEGh8QYHC0hxvpES9uYmpoa0PGRes0j+btua885kHrT09PZt28fpaWloQtIhJTJZKJr1651JuCBiLpV0M844wzOOOMM//8PGDCAq6++msWLF3PDDTcQExOD3W6vcY7dbicpKalJ9RUVFTV5M/tQUBSFjIwM8vLyomqPv3DHVV2f1WYDt8N3p9eN+ch6VGMClYYMsFpB8SXfVpsVjoWlT+yB8chKqo5sxZPY9XihOiMWCMtzkN9jYKI1Lr1eHxXJaFtvF08Ure+VE0mMwSExBkcoYtTpdAEno6EQ7raxsLAQt9vd4HGRel9E8v3Y1p5zU+s1m83ExsY2OVZFUUhPTyc/Pz8iv+NI1B0t9VaPgMnPz6/z+EDaxahLwL/++msKCwu57LLL/Pc5nU5MJhMAPXv2ZNeuXTXO2b17N2eddVaT6ovWzewlrmP1oVKdWetKdqF47DjaDUVVfI8qqlJ94LFjwZXUHeORlWjL9uFO7FKjNAjvc5DfY2CiLa5oiUXaxdokxuCQGIOjrcUYLc812tvGSL0vIvl+bGvPuan1NnXIvKIoaLXaiE0ziETd0VTvqX7XgbwPIr4N2clUVeXJJ59kxYoVqKrKunXrePfdd7n00ksBuOSSS1i4cCErV67E5XIxd+5cioqKmDBhQoQjF6GmL9qOqmhwpfQ+5XGqKRGvMQFd+UGIkosEIZpD2kUhhKhN2kYhREsUdT3gEyZM4P777+fRRx8lLy+P1NRUbr31VqZNmwbAqFGjeOSRR/yP9+jRgzfeeIPExMTIBi5CSnFa0VYcxp3YDXSmBo93x3fCULAJjb0Eb0xyGCIUInSkXRRCiNqkbRRCtERRkYDv2LGjxv9fdtllNYYTnWzatGn+xlW0DfrinSiAO7lXo453J/gScG35QUnARYsk7aIQQtQmbaMQoqWLuiHoQtSiquiKdqBqjbgTOjfqFI+lAyoK2oojIQ5OCCGEEEIIIRpHEnAR9TRVhWjtxbiSe9bcVuxUtHq8sWlobUdlHrgQQgghhBAiKkgCLqKevngnAK5GDj+v5rG0Q+O2ozhKQxCVEEIIIYQQQgRGEnAR3VQVXcluvIY4vOaMgE71WNoBoLMeDUVkQgghhBBCCBEQScBFVNPY8tA4rbiTukOA+/95LJkAaCUBFyLkFEUJ+k0IIYQQorWJilXQhaiPrmQ3AK7EbgGfq+rNeA1xaGz5wQ5LCHGC1LQ09Lrg/zlxud0UFhQEvVwhhBBCiEiRBFxEL1VFX7wLrz4WrzmzSUV4YtPQle4Djwt0xiAHKIRQFAW9TseLSzbicHuCVq5Rp+WOKQNQFAVVFlIUQgghRCshCbiIXgU70NhLcKb1C3j4eTVvbDpK6V60VYV4jJYgByiEqOZwe3C6vZEOQwghhBAiqskccBG9tn0OgLsJw8+recxpAGgqZRi6EEIIIYQQIrIkARfRa9vnqDoTnrj2TS7CE5sOgNYm80iFEEIIIYQQkSUJuIhK2vIcyN2EO7E7KNqmF6Qz+RZiq5QEXAghhBBCCBFZkoCLqGTctwwAV3KPZpfljUlB4ygFb/AWiBJCCCGEEEKIQEkCLqKSae9XYLDgSejc7LI8MckoqheNvbT5gQkhhBBCCCFEE0kCLqKOxpaHIW8d9JwImuYv1O81JfvKrSpsdllCCCGEEEII0VSSgIuoY9r/je+HPlODUp43RhJwIYQQQgghRORJAi6ijmnfMlStAXpOCEp5XlMSKgqayqKglCeEEEIIIYQQTdH88b1CBJFiL8Fw5Bccnc7CZIwLTqEaHV5jAtoqScCFEEIIER6KogS9TFVVg16mECK8JAEXUcW0/1sU1YOj60RMQSzXG5OCrnQvuKqCWKoQQgghRB28bjIyMoJerMftJL9AOhSEaMkkARdRxbRvGaqixd5lHAlBLNcbk4xSugcKd4IS/D+IQgghhBBwrOdbo8O27Gm8bnvwytUZsUy4D0VRpCdciBZMEnARNRSnFeOhn3C2H4lqSgxq2dULsZG/HULwjbQQQgghxIlUtwPcjuCVF7SShBCRJIuwiahhPPgDiteFvWtwFl87UfVWZORvDXrZQgghhBBCCNEYkoCLqGHatwwVBXuXc4NetteUgKpoIX9b0MsWQgghhBBCiMaQBFxEB7cd48HluDIG4TWnB798RYs3JgkKJAEXQgghhBBCRIYk4CIqGA/9jMZdib3bxJDV4Y1JgdKDKC5byOoQQgghhBBCiPpIAi6igmnfVwDYuwR//ne16nng2rKDIatDCCGEEEIIIeojCbiIPI8L04HvcKWehic+K2TVeI+trK4t2x+yOoQQQgghhBCiPpKAi4gzHF2NxlEWktXPT+Q1JQGgK90f0nqEEEIIIYQQoi6SgIuI8w8/D1cCXnYgpPUIIYQQQgghRF0kAReR5fVg2vc17sSuuBO7h7YunRHMaTIEXQghhBBCCBERkoCLiNLnb0BbVYi960RQlNBXmNwdnSTgQgghhBBCiAiQBFxEVPXw86oQDz/3S+mBxl6C4igLT31CCCGEEEIIcYwk4CJyVBXTvmW4Le1xp/YNT50p3QCZBy6EEEIIIYQIP0nARcToirajqziMo8u54Rl+DpDsm2cuK6ELIYQQQgghwk0ScBExpv1fA2DvOj58lab0AGQvcCGEEEIIIUT4SQIuIsa072u8pkScmUPDV2ly9RD0/eGrUwghhBBCCCGQBFxEiLY8B33xDuydx4FGF76KDbF4zJloZQ64EEIIIYQQIswkARcRYdq3DAB7lzAOPz/GndDZ1wOuqmGvWwghhBBCCNF2SQIuIsK0/xu8ulgcWaPDXrcnsQsalw1NVVHY6xZCCCGEEEK0XWEc+yuEj6ayEH3ur9i7TgCdKez1uxO6AL6F2LyxqWGvXwghhBCirVBCsNONKqMYRQsmCbgIO+OBb1FQfQl4BHjiOwGgK8/B1W5YRGIQQgghhGjt0tNS0OoMQS/X43aSXyAjGUXLJAm4CDvTvq9RNTocnc6OSP2e+I6AbyE4IYQQQggRfIqioNUZsC57CtXtCF65OiOWCfeFpGddiHCI+Bzw4uJiJkyYwKpVq/z3ffnll0ybNo0hQ4Ywbtw4Xn31Vbxer//xBQsWMGHCBAYNGsTFF1/MunXrIhG6aALFacV4eAXO9iNRjfERicETnwWAtuJQ0MsurXJTYHXK0CjRLNIuCiFEbdI2tkyq2wFBvAUzmRciEiKagK9du5ZLL72UgwcP+u/bvHkzf/nLX7jjjjtYs2YNb7zxBp999hlz584FYNWqVTz++OM89dRTrF69mgsvvJA//OEPVFVVRehZiEAYD/6A4nVFZPXzaqrejCcmBV0Qe8DX5FTwuw+2MeVfG7lwzmamzdnE2z/tw+OVRFwERtpFIYSoTdpGIURrEbEEfMGCBdx9993ceeedNe4/fPgwl112GWPHjkWj0dC9e3cmTJjA6tWrAZg3bx7nn38+Q4cORa/Xc80115CUlMTixYsj8TREgEz7vwbA3mVcROPwxGUFrQf8i61F3PbZLg6W2DmvTzK/6Z+KxwuPLdzKHQt2YXV4UBSlUTfRtkm7KIQQtUnbKIRoTSI2B3zMmDFMnToVnU5Xo0GdNGkSkyZN8v+/3W7n+++/Z+rUqQDs3r2b6dOn1yirR48ebN++PTyBi6bzODEeXI4zfSBec0ZkQ4nPwpC/AVxVoI9pcjm7yjXM+voAHZJieP/6kXRJNQNgd3l4bOFWPvrlIHd/cYD3rx9BnEnfYHkut5vCgoImxyNaNmkXhRCiNmkbhRCtScQS8LS0tAaPsVqt3H777ZhMJq655hoAbDYbMTE1EyaTyURlZWWT4oi2nsfqWKIpJghOXIbDK9G4bDi6TmiwHH99KMApjlWO/6uoDcV2/DlUL8Smsx7Bk9yjEdHXZnN6uO+zregUhbO6xvPxil0nxA8dEswMybLwa04pF7z0A1P6JJ/yeRt1Wu6Y0h+NRhOyOeSt+f0VCuGOpyW2i8ePa+CzGngUJ5Vfs75oe6+cSGIMDokxOEIRo7SNDR/n+6H6OiZYTv27jOT7sa66G30tF3ht9dYVLpF6raPtdyz11j6+MaJ2FfS9e/dy2223kZKSwrvvvovFYgEgJiYGu91e41i73U5SUlKT6klJSWl2rKGQkRHZHuL6NCuuX34CIG7Eb4lLyWzUKRazGTwN9xxbzJaGC9P6tsHIyMiArH7wK6RprZDZuFhO9vTS7RwpszOhTwZpSbUXlHN5VcZkZ1LpzmN7bgUb8hyM6JJcb3l6reZ4fCHWKt9fbUA0t4sWswWnx9vwgY1kaODz0BLeKxJjcEiMwdESYmyqcLWNqampAR1viW3cNUyjnXgdcwqR/F3XVXdjr+UarY7XIVLPua3VG8m6W1O9UZmAL1++nLvuuouZM2fy5z//GZ3ueJg9e/Zk165dNY7fvXs3Z511VpPqKioqwuVyNSveYFIUhYyMDPLy8qJqJe1mx+X1kLZtEd6kHhS5zJCb26j6rDabb9XLeg/0XfhbbVZoKCydEQuQl5eHXo0nGSg/uJHKhEEBPhkosrl4+8d99MqIo1uSFqvVelL8YDZbqKy0MbKjmdyyKlbuLSI9RiHVXPcfIYPOl3CE8nffat9fIaLX66PmS7pobRePf1atON1BTMDr+TxE63vlRBJjcEiMwRGKGHU6XcDJaKiEs20sLCzE7XY3eJxGoyE9PR1rpQ1cQVyx+4TrmLp+l5F8P9ZVd6Ov5QJ1wusAROQ5R+q1jrbfsdR7XCDtYtQl4OvXr+dPf/oTjz76KJdcckmtxy+55BL+9Kc/MWXKFIYOHcoHH3xAUVEREyZMaFJ9qqpG5R/N1haXPm892qoiKnvPCOh8FZVTZdb+Yedq9bGnLg18z8Ed1wEAbVlOk57Pv3/Nw+72ctfEbNbvPVorRvVYXKoKOg2c3T2Bz7cU8dO+Ui7sm1LPMJXj8YX6d9/a3l+hEi2xtIx28dSf1SZEccpYou29UheJMTgkxuAIZozR8lyjtW30H9Ooa5OAImhUHJF8P9ZVd0PXck2oxV/XqeoNh7ZWbyTrjvZ6A4kt6hLw2bNn43a7mTVrFrNmzfLfP3ToUN58801GjRrFI488wqOPPkpeXh49evTgjTfeIDExMXJBiwaZDnwHgCPCq59X85gzUTW6Jq2E7nB7+XxLIR0TjUzok3EsAT+1VLOefpmxbDpayc6CKnqlxzYlbNFGSbsohBC1SdsohGiJoiIB37Fjh//n2bNnN3j8tGnTmDZtWihDEkFmPPgDHlMyrrR+kQ7FR6PFY+mAtiLwvcC/3VVCmd3DNSPaodE0fsGFQe0t7C60sybHSpdkE0ZdxHYBFC2AtItCCFGbtI1CiJZOMgARchpbHvriHTg6nglK9LzlPPFZaMsP+caJB+CLrcXotQrnnRbY3GCDTsOwjhbsbi/rDlsbPkEIIYQQQgjRqkRPNiRaLePBHwBwdGraoieh4o7viMZdhaaqqNHnFNpc/HqoglFd4kkwBT6ApGdqDKlmPdvyKrE6PAGfL4QQQgghhGi5JAEXQVW9R+aJN1POD6iKBmfHMXU+Xt8t1DxxWQBoyxs/DP3bXSWowITs+rcTOxVFURiSZcGrwqajtiaVIYQQQgghhGiZomIOuGgd0tNS0OoMNe90O+HwSsgaTkaX3pEJrB6e+GMJeMUhXJmDG3XOt7tKMOk0jOma0OR6sxIMpJp17MivZEB7M2aDtsllCSGEEEIIIVoOScBFUCiKglZnwLrsKdQT9nrUlh0k1lmBQ9XhXPJY48szxmEZdxcKSlA3rjiRO64jALpG9oCXVbnZdNTGmG4JmPRNHzyiKAqDO1hYtrOUTUdtnN45vsllCSGEEEIIIVoOScBFUKluB5yQgOtKdgP49t0+4f4Gyzm5Jz0EPNV7gVccbtTxKw+U41VpVu93tY6JRpJjdWzPq2RgezMxeukFF0IIIYQQorWTOeAipLRlB/HqYvHGpEY6lFpUYwJevRmt9Uijjv9pXxkAo7s0PwFXFIWB7c14VNieX9Xs8oQQQgghhBDRTxJwETKKoxytvRhPQicIw6JqAVMUPHHt0VY0nIB7VZVVB8vpnR5LilkflOq7JJkwGzRsz6vE4w3VQHshhBBCtBler29xWY8z0pEIIeohQ9BFyOjKDwLgTugc4Ujq57G0x3joZ1C9p9yjfFdBFeV2D9P6xgWtbo1GoU9GLGtyrOwvttMn0xy0soUQQgjRhqgqsZvfg7WvkmYvw2uwUHna5VQMvx000XG5r6kswJC/EcVpxRubijOtP6pR1sERbY/0gIuQ0ZYdQEXxL3YWjTyWDiheF5rKglMetyanAoBhHYOXgAP0SotFq4EtuZVBLVcIIYQQbYSqEv/jY8T/NAtMidj6/haPpR2W9W+QtPQP4HFFOkIMub8Su+0T9EXb0dpyMeStx7zt40aNQhSitZEEXISG14Ou4hAeSzvQGSMdTb2OL8R26j8Aa3Mq0GsVBrS3BLV+k15Dj5QYCmwucitkuJgQQgghAhO79d+Yt/4bR4dR8IefqDjzEQov/pTK7Isw5fyP+BVPRTQ+/dE1GA+vwBuTgq3PpVgH3URV9ymgqsTsWoimqjii8QkRbpKAi5DQWo+geN14onj4OYAnrj3AKRdic3tV1h+x0i/T3Kztx+pzWmYsANtybUEvWwghhBCti6Io/pvWeoT4lU/jju9I2aSXwRjne0xnpPzsv+NoPwLzlg8wHvyhxnkn30LmwM8YD/4PjymJyuyL8MamgqLgTuxGVY8LQPVg2v81eD2hi0GIKBMdk0JEq6MrOwCAO75ThCM5NY/lWAJ+iq3I9hRWUeXyMjDIvd/VkmP1pJn17C60Y3W4Q1KHEEIIIVo4jRa8bjIyMo7ft/xucNvRTXuZ9E7ZADUfv3Qu/GMEyStmweCpYIits2iP20l+QVFQw1VclfDZzaDRYu82GXSmmnXGtceZOQRj7lr0BZtxZQwMav1CRCtJwEVIaMsO4NWb8cakRDqUU2pMD/imo76e6f7tQrdIWnZ6DD/tK2fRhiOc0yn0e6ALIYQQooXRaEGjw7bsabxuOxrrUczbFuJK6oF95/9Qdv6IxWzGarOhcnx3FX3mUEwHl+N49xKcHUbWKlbRGbFMuA9FUVDV4O3KYv71dSg7iKPzOXhjkus8xtluGPqi7Rhy1+JK7QNauQYSrZ8MQRdBpzjK0DpKfaufR+P2YyfwxqSiao2nnAO++agVgL4hTMC7JZvQaRT+vTonZHUIIYQQouVT3Q5wOzAcWgH4kliO3YfHefznYzdXSh+8hngMR9eAvbzW46rbEfQYteWHMG+YAxn9cWUMqv9AjQ5nu2Fo3FUYCjYHPQ4hopEk4CLoqoefe+Kje/434NsL3NKuwR7wTklGEkyhGzBi0GnonmpifU4pe4uqQlaPEEIIIVo+TVUR+rL9uBK7NTzaUKPF0X44iseBIX9DWOKzrHkFxeuCyU+ccptXwPcFgT4Wff4m37awQrRykoCLoNOVHURVNLjjsyIdSqN44tr7esDrGHZVbHNxpNxJ/3ahmf99oj4ZvnlZn28uDHldQgghhGi59PkbAXBmDmnU8e7kbLyGePQFm8Ab2m3JdCW7idn1OY6sM6DrWQ2foNHiSu2LxmVFV7o/pLEJEQ0kARfB5XWhrd5+rIXM4/FYOqBxV6LYS2s9tik39PO/q2XGGeiSEsuyHcV4vMGbgyWEEEKIVsRtR1+8E09sOl5zRsPHAyganBkD0bjt6It2hDQ887p/oaBiHX57o89xpfVFVTToZRi6aAMkARdBpS0/hKJ6cLeE4efH+PcCt9ZeCX3Tsfnf4UjAFUXhwkEdKKp0s/ZQRcjrE0IIIUTLoy/YguJ140wfENB5rpTeqFojhrz1dY76CwZteQ4xu7/A0WFUQKuaq3oz7oTOaCtyUJyyLato3SQBF0GlK90HEPX7f5+oeisyXR0LsW0+asNi0NIl2VTrsVCYNsgXy1fbi8NSnxBCCCFaEFVFV7AJVWvEndQ9sHO1BpxpfdE4ytCV7QtJeLEb3kZRPVgH3Rjwue7kXiiArnhn8AMTIopIAi6CR1XRle7Da4jDa0qKdDSN5q5nKzKXx8u2vEr6ZsaiCdNq7t3TLPROj+W7PaXY3bIQiRBCCCFOcORXtFVFuJKzQRP44rCu9AG+od5564MfmzWf2O3zcab2xdlhVMCnuxO6oGqN6ItDO0ReiEiTBFwET9EeNI4y3PGdon77sRNV94BrK2oOQd9VUIXTo9IvDMPPTzSpdzKVTi8/7ysLa71CCCGEiHLr3gfw7ZndBKrejDs5G531KBpbfjAjg1WzUTwObINvatp1oEaLK7Eb2qqiOtflEaK1kARcBM/uZQC+/b9bEK85HVWjq9UDvqOgEoA+GeFNwMdnJ6EAX+6QYehCCCGEOMbjgk3z8cSm4Y1JbXIxznTf3OxgbkmmOK3wy5u4E7pg7zK+yeW4k7oBoC/dG6zQhIg6koCL4Nn1FaqixRPXMrYf89Po8JgzfFuRnWBHvm8/7l7psWENJ81iYEhWHCv3l2NzeMJatxBCCCGik65oJzjKcaf1a9ZIQ29sKu64DuhKdgdtwbPYLR+Bowzb4BtBo635oM4AOmOjbp6k7qgag29NoXqPaxm77AhRn8AnjwhRB8VVCft/9CXfWn2kwzklpY4/Wl5LB3TFO2o8trOgkpRYHWmWuhv6usoJlnE9E1l7qIKf9pcxsVdyyOoRQgghRMugz98AWgOulKYNPz+RM30gsRWH0Rdsxtm5EXt1n4rbTuymdyCuPVU9L6zxkMerEjfh/sDKqzqCdvN84kbfAAkd6jxEtmsVLVmTEvCcnBw6duwY7FhEC2Y4sgo8TtyJXSMdSv00WjxelYyMOvbMTO8BR38hMzEWTPG4PF72FK7jjB4pZGZmhj3Uc7on8ux3OXy3q1QScCGEEKKNUxxl6MoOwmkXgT4G3PZmledJ6IzXGI++cDPOjoEvmHai2O3z0FYWwKQnQWvwb3GmKApajcI/3/0Qh72y0eX1qjRyHvDVW4+yxTyy1uNGUyx//N1vURQFNUTbqQkRSk1KwKdMmcLgwYO55JJLmDRpEiZTeLZoEtHLeGA5AO7ELpEN5FQ0WrQahReXbMLhdtd4aEy+njOAOZ8vozCmG4U2F06PlzJbFU8vXFdncXEmPX+c0A8Ifk94slnPwA4WVhwoo8rlIUavbfgkIYQQQrRK+sKtvh+GXg07f2x+gYoGZ/oATDk/oi/c1vRy3A4s697AE5OKdug1UFxe6xCH04nT5Wp0kbu13VBR6FS1jXWGIbUP0DibHq8QUaBJc8CXL1/O2LFjmTNnDmPGjOGvf/0r69bVnaSINkBVMR78AZK6oLaA7cccbg9Ot7fGrUibDoC56ihOt5fccgcASTG6WsdW3xzu0M7PHtcjEYdbZcX+2n/MhBBCCNFGqB70hdvxGhOg6zlBK9aV0gdVa8Rw5BffAm9NELvjM7SV+dgGXQ+G4KyZU6Uxc1SXRRfXLhRV1sIRrU+TEvCUlBSuu+46Pv/8c959913i4+O57777mDJlCm+++SbFxbJ6c1uiK92L1noYek5sUduPnajM4BuWnuDMA6DI5ushTzFHbpmEs3skAvDd7tKIxSCEEEKIyNKVHUDjrsSVMQA0QVw/WWvAmTEIjaMcNnwU+PkeJ5b1/8JjSqLqtMuCFxewz5CNSbXT3p0T1HKFiAbN+hS73W6OHDnCkSNHKCoqIiYmhg0bNjBx4kQWLFgQrBhFlDMe9A0/p8eEyAbSDMcT8FwACm0uDFoFiyFyQ7/TLQb6tzPz074y7G5vxOIQQgghROToC7eiouBKHxD0sp3pA1C1Rvjh2YB7wWO3f4rWehTbwOtQ9cHdMWavoRcA3Zw7g1quENGgSd1769ev57///S9LlixBURSmTp3K+++/T+/evQFYtmwZDz74IL/5zW+CGqyITsaDP6BqjShdxsCeFZEOp0nK9OmoKCQ68/CqKsWVbtIt+pCudN4Y5/RIZNNRG2sOVjCmW0JEYxFCCCFEeClOK9qyg3gSOqMa44JfgdaAs91QjId+JmbXf6nsNb3RcVnWvIInNo3Kvr8NelhHdVlUKTF0de7kf+aJQS9fiEhqUg/4FVdcwZEjR3jsscf44YcfeOCBB/zJN0CfPn0YN25c0IIU0UtxWjHkrsXZfmTQ5v5Eglejp0KXTIIrj3K7B7dXjejw82pndvUl3T/uK41sIEIIIYQIO33BZhRUnKmnhawOZ8ZgMCViWfNPcFU16hzLr6+htRdTMfwOVL056DGpiob9hp60cx8i1msNevlCRFKTEvD33nuP119/nUmTJqHXH9/z+YcffgAgKyuLp556KjgRiqhmOLwSxevC0amZe0hGgTJDBgnOPAptviFYKbGR38+8Y5KJzklGftxbhle22hBCCCHaDo8TQ8FmvMYEPAldQlePzghn/wWt9TBx62Y3fHjBZswb5+JM7UtV9kUhC2uvIRuALs5dIatDiEhoUgJ+ww031LrParVy++23Nzsg0bKYDn4PgKPT2ZENJAjKDBlY3CWU2HwroKeYI5+AA5zZLZGiSjfb8hq/h6YQQgghWjZ90TYUjwNnxqDQL3I74mZcKb0xb3gLff6meg9TXDYSv7sfFIWyc54ATejWytmvlwRctE6NTsAPHDhAv3796NOnD5WVlfTp06fGbfjw4Zx2WuiGx4gopHoxHlyOK7E7noROkY6m2cr0voXYym2VaBWIN0XH3tvVc79/3FcW4UiEEEIIERYeJ4aja/HqYnGl9Ap9fVodZWOfBEUhcdntaKrq2NHI6yHh+wfQl+yiYvjtuEMcl1UbT5E2jc6uPSCjAEUr0uhJrp07d2bevHmUl5dz00038cYbb9R43Gg0kp2dHfQARfTSF2xBW1lAVc8LIx1KUFSvhF5YpZIUq0MTJVuq9cs0kxij48e9Zdw8qn2kwxFCtCKhWGhSlQtlIWrzutFUFgIqXnMGKKfuAzPkrUfjrsLe6WzQhGdEnjv1NMrO+CuJP/yV5IW/o2TK63jiOgC+nu+E7x8kZu+XVHWbjG1g7dGwoXBA350h9pUkeosp1aaEpU4hQi2gVab69OkDwKJFi+jYsWNIAhIth/HAdwDYO4+NcCTBUWbIoEiNw+rW0i4pOoafA2g1Cmd0ieeLbcUcLXfQLt4Y6ZCEEK2B101GRkbQi/W4neQXFAW9XCFaKk1lATG7F6Fx+aaSefVmHFln4E7qUefQck1lIYbctXhMSbhS+4Q11qo+M9C4bMSveIq0T86nqttkVH0spn3LfJ0u3SZTOu6Z0A+JP+agoRtD7Cvp5NxLaYwk4KJ1CCgBf/TRR3n00Uf55z//We8xTz75ZLODEi2D6cB3eI0JuDIGER19xc1Tps9gh9f3xVJyTORXQD/RmG4JfLGtmB/3ljFjUHqkwxFCtHCKooBGh23Z03jd9uCVqzNimXAfiqJIT7gQgOIoJ3bHAlC9ONoNB1VFX7CZmH1f4SreiaPT2agGy/HjXVWY9n0FKti7nAtK+KfD2QZcgyupB/ErnyF2538A8MSmUXbmo1T2nhHSed8ny9F3A6CTaw8bY4aHrV4hQimgLEP+mIpqGmsu+qJtVPa8EDTRlaw2VZkhnW2qby57cmx0PacRneLRaxX+Jwm4ECKIVLcD3I7glRe0koRoHYyHV6B4XVT2ON+/krkrvT/GnB/Rl+xCt+UIznZDcSd0RnFUYDz8M1p7CfasM3xD1SPE2XEMhR3H+OaCu+14Le3C1ut9okqNhQJtBp1ce33zwKNkeqAQzRFQlvHYY48B0sstTlj9vJUMPwdwas1soTsASVGwBdmJYg1ahmXF8UtOOVaHB4sxOhaIE0IIIUTdNNaj6Et240roUmMbMVUfi73bRFyl2ZgOLsd4eAXGwyt8j6HBnjUGV8bACEVdkzcmOdIhcFDfjaH2FSR5CinRpUU6HCGarUnbkBUWFvLEE08AsGbNGkaPHs0FF1zAnj17ghqciF7GA9+hanQ4ssZEOpSg2qp2IVUpI0bfpI9GSI3ploDHCysPlEc6FCGEEEI0QJ+/EQBnh9PrfNyT2AVbvyuo6jYJR+ZQHB1Ox9b/yqhJvqPFQYOvc6STa2+EIxEiOJqUZTz22GPs2bMHVVWZNWsW5513HmPHjuVvf/tbsOMTUUhxVWI8vAJn5jBUY1ykwwkar6qy15NBH+UAiuqJdDi1jOl6bDuyvaWRDUQIIYQQp+ayoyveiSc2De+pFg/T6HAn9cDZ4XScmUNRDa3nuipYDuq7oqJIAi5ajSYl4Js2beKVV16hoKCA7du386c//Ynbb7+dzZs3ByWoPXv2cP311zNs2DDOOeccXnvtNbxeLwAbNmxgxowZDB48mHHjxjFv3ryg1Ckaz3B4JYrH2WpWP69WbvfgRMdpygEs7jr2v4yw9DgDPdNiWHmgHI9XZlq2RdI2CiFEbVHZNu5ciuJx4koOwx7erZxdYyZfm0knp+wHLlqHJiXgVVVVmEwmVqxYQXZ2NklJSdjtdnS65i9cZbPZuOGGG2jXrh0//PADH3zwAYsXL+af//wnZWVl3HTTTVx00UWsXr2aWbNm8eSTT7Jx48Zm1ysaz3Rs+7GWOv/bt36HUutWXOkGoLfmIAnO/DqPqX0LrzO6JlBm97Al1xb2ukVkSdsohBC1RW3buO1zANzJPUJfVxuQY+iKRbWS5CmMdChCNFuTMuYBAwbw6KOPsnbtWqZMmUJhYSF/+9vfGDFiRLMDWrt2LUVFRTz88MMYDAZiY2P5wx/+wKxZs0hPTycxMZErrrgCgFGjRjF16lQ++OADBgwY0Oy6RSN4PRgPfo8rsTuehE6RjiYwx7byMMda0Hu8tR625vm24umtHGSfpoxSi6XWMScyG8K/ENoZXRKY+0suP+0rY0D7U8cnWhdpG4UQoraobBtVFfb9gCc2DVVvDl09bcghfVeGVf1MR9d+ttPCrj+FOEmTEvBZs2bx/PPPM2zYMG6++Wa2bt2K0+nk73//e7MD8nq96PV69Prjq1ArikJhYSHr1q0jOzu7xvE9evRg/vz5Ta5PURTffqhRojqWaIoJjsdjyFuHtrKAqt7Ta8TojztoPcOK/x/lVOUpx/9V1AbqPbZdmmv/SpyOqloPF+QnocFId+UIeUd+xllmOmVxRks80P3Yc69Zd/VLoyigNhTX8bOOnVP/8adlmkmK0fHT/nL+OCarkeWeGFd0v7+iNa5oEM62MZB28fhxwR4VUvd7IlrfKydqSTE22MYGXnLN8ptTUgt6HdtajNH0fKOxbdSV7gFbAZ52Q0Py+ar3cxvINVEdJ2o0miZvOVz9upxYhkZz4kDb5r0Oh/RdAchy7Wc7Z9Wo8+SfwyFSn/1Itjlt7TkHWm8g8TUpAU9PT+epp57y///AgQOZPXt2U4qqZciQIZhMJp577jn+9Kc/UVxczJw5c/yPx8TE1DjeZDJRWVnZ5PpSUk6xMEYEZWREbu/HU0k++gMAluFXYMnMrPW4xWwGTxC28DL4vjG2xDauPIu5Eb3BMbEA6LUaVF3t3util4EUvQuD4iFJLcNQxzEn0ml9HzRzrLnOHnUAc2PiOsag9f2hauh3P65PPp/+egiPKYEOiTGnPLY+0fr+ita4okE428amtIsWswVnPZ+Dpmjo89AS3istIcbGtrGNpjUAwX3uLeF1lBgjJ5xtY2pqauMO3P8fAAxpPTE0MJouII28NmrUNdGJdDHgdZOent6c6ADqLMOgN4DavL8PLlIo0abS0X3AV95JdUXq/d3W6o1k3a2p3iYl4DabjQ8//JD9+/f7F7mo1tw9wuPj43njjTd48sknOeecc+jUqRMXXXQRmzZtQqvVYrPVnPtqt9sxm5s+vKeoqAiXy9WsmINJURQyMjLIy8tr8reQoaAoChlpaXi2LECN70whaZCbW/PxjAysNhu4Hc2v0KRgAayVNnCdojzF94fGarNCQy+XasQCOF1OnE5njYccXoVyt5aeMXbcqhaLq6jWMSczGHzvG1ulDYer5qrpiuJLvm02a6PXCzHofAlHQ7/7IZkGPgX+s2o30wcGth9mVL+/ojAuvV4fNV/ShbNtDKRdPP7Zt+J0BzEBr+fzEK3vlRO1hBg1Gg3p6ekNt7GB0vna2WA895bwOrbVGHU6XeOT0RALZ9tYWFiI2+1u8LikHV9jVLRYDalgtTaprjo1dG0UyDXRyeVqdNi+fhq1qe2B4vtiwFpp89etxKZgPvtPdV53NUWOvgsD7GvQ2wsAyM/PR1XViHwGI/XZj2Sb09aec6D1BtIuNikBv//++1m3bh0jR46sMeQnGJxOJ263m3fffdfflf/hhx/So0cPBgwYwNtvv13j+N27d9OzZ88m16eqalT+0YzKuA79gtaWj3XQjb62tY74VFQCa/Xro/r/UU9Rnn+IVQPH1Siz1s9Q7PK9j1MMTsrdicR7Smodc+pyax5bPezc9xIFUk7DRnaOR6uBn/aVNioBr+t9FJXvL6IvrmiKJZxtY9N+D8H67J9YXv2xRNt7pS7RHKM/rka1nQGV7C8/WM89ml/Ham0txmh6rtHYNroTumAc8jvQGlHd9ibVVU8E/n/q+twGdk1Uu1zV5WhyvAqKr1fe5fDXrXpOLKv575lDus4MYA3tHb7tyE78fUTqM9jW6o1k3dFebyCxNWkV9FWrVvHhhx/y7LPP8uSTT9a4BcP111/P/PnzUVWVzZs3M3v2bK6++momTJhAYWEhc+fOxeVysXLlShYuXMj06dODUq9owNb/AlDVbVKEAwm+IpdvOFOy3kW5Jol4b2nYt7rQahQ8Xt83uZmZmfXeenTuwMiuKaw9ZCUhOe2Ux2ZmZpKaFlgvuYhe0jYKIURt0dY2WkfdA1NfDGkdbVH1PPAOTtkPXLRsTeoBNxqNIRuHbzAY+Oc//8mTTz7JE088QUpKCjfeeCMzZ84E4K233mLWrFm8/PLLJCcn89BDD3H66aeHJBZxAtULW/+LOy4Ld2rfSEcTdEXOYz3gehfl7gS6uHZjVKtwKLFhi0GrUdBqFF5csglHQ0PcPC4cbi93ffQLXZLrXyzOqNNyx5QBKIoSVT0WInDSNgohRG3SNrYdJdoUbIrF3wMuREvVpAT8t7/9LU899RS33HILycnJwY6J4cOH89lnn9X5WP/+/fn3v/8d9DrFqenzN0L5YewDrz++xHcrUuwyYNR4MGs9lGuSAIj3llKgCV8CXs3h9jQ4l7Z9vK/Hfl9Rlf9n0fpJ2yiEELVJ29hGKAqH9F3o6dwC9vJIRyNEkzUpAf/kk084cuQIH330Ua3Htm3b1uygRPQx7f0SAEe3yRGOJPhUFYpcetIMThQFyrSJACR4SinQtY9scPVIiNERb9KSU+pAVdWo2hJGCCGEECIUDum70Mu5GQ79AnH9Ix2OEE3SpAT8xC3IRBugqpj2fAkJHXGlt77GrsKjxaVqSNH7Vn0u1yQCEO8tiWBUDeuYaGRLbiXFlW5SzMFdDFEI0UqoKtqKQ+iKd6KtLABVxWtKxJvUDdKiYxVrIYRorBx9F98PB1ZAv9Z3TSrahiYl4CNGjACgrKyMnJwcTjvtNNxuNwaDDIVtjfQFm9FaD8OoW3zDz1vZXOIip+99m6L3bZFRrj02BN1TFrGYGqPTsQQ8p9QhCbgQogZtyV5idn1OzJ4v0JXn1H2QKQGjJQtnah+85ta5R7QQonXJ17XDqRgxHFwJ/W6KdDhCNEmT9wF/+OGH+eKLLzCZTHz22Wdce+21vP3223Tr1i3YMYoIqx5+zmnTIhtIiBT5tyDz9YBXaBJQUUiI8h7wjDgDeo1CTqmDQR0skQ5HCBEFtGX7iVv9MjF7FgPgiU3DdtrluNL64TGng6JDYy/CULwT89GV6HM3oi/cgjuhM/aOZ6IaEyL8DIQQon6qouWooQudD68BjxM00gEhWp4mJeDPPPMMlZWVLFmyhJkzZ9KxY0fGjh3LrFmzmDNnTrBjFJGkqpj2LsVjzkTbYRjk50c6oqArchlQUEnW+RJwj6LDqrEQ7ymNbGAN0GoUOiQY2F/ioMrlJUbfpF0FhWgWj1flvZUH+G5XCSa9hr4ZZkzyXgw/j5O41S9j3vg2iurB3ulsbAOuxdluOGi0tQ53ajSYMzKo/PRW9IdWoC/Zhbn8EM52w3BmDgFFfodCiMgqcek46jBi9ehQVYjVekgzOMkxdKdzxQ70BVtwZgyKdJhCBKxJCfh3333HwoULSUhIQFEU9Ho99913H2eddVaw4xMh1JiFu3SFW9FVHMLW/2rMGk2957TkRcCKXHoSdG50muND68s1SVHfAw7QMcnI/hIHh0od9EyLiXQ4oo1xe1T+/PlufjlY4b9vW14l5/VJJjlWeiWC6VRtrK5wGwnf/gV98U6caf2pGH0frnbDfOc1UJ43Ng17t4m4KvpiPLgc45FVaK25VHWdADpjsJ+GEEKckqrC3qoYfi1PoNBV99TWbzQzuVaJYcbBdegkARctUJMScK/X65/vXb238In3ieiXnpaCVteI39fm1wEwD7sMIGT7v0eKy6tQ5tbRPaayxv3l2kQ6uA+iVV14lOhNJDom+i6QcyQBFxFQbnezI7+S347shEF1sLfQzo/7yvhqRwnT+qUQo6/d8yoCd8r2esPH8PmtoHpg3EMYzriTFG3gf9o9cR2o7DMT08Hl6Iu2Y94+j8oeF6CaEpsXvBBCNJLVreWb4hSOOEzoFC99zFY6mapI1LtRULF6dByxG9ldZeYl93TmrrDze2MBv29l16ai9WtSAn766afzt7/9jYcfftj/LfqLL77oX5xNRDdFUdDqDFiXPYXqdtR/oKpi3jgX9GYqtyzDcmAFVpsNldqLsCnGOCzj7kJBqePR6OWb/634539X86+E7imjRBe9KwXH6LWkmfUcLnPg9apoNC13JIJoeZLNepbePJB27drx9MJ1/i+Bfthbxi8HKzi7e2JkA2wF6m2vVS/GnB8xHF2D12Chqud0vLZK+GpWo8rVGOMxj7uzZhe5Roe98zg8sWkYc34kducCqrIvwmtKCu6TEkKIk+Q6DCwpTMPu1dLHbGVkQikxWm+NY5L0bjqa7JyR7qRbxRqeLjidp789yMZ8J38+MxOzQabOiJahSe/U+++/n7179zJ8+HAqKioYPHgwq1ev5t577w12fCKEVLcDTnHTWI+isZfgTuzqW+jC46z3WNVzikQ+ihVXL8B2bAX0amXVK6G3kGHoTo9KntXZ8MFCBNnJQ6N7pJrISjCwu9BOXkXbe08qiuJ/Tap/bu4NTmqvnZWYdi3CcHQNHnMmlb0v8SXJDbTpjWqzFQVX+gDs3SaiuKqI2bEATVVRuF4+IUQblGM38Xl+Bm5VYXJKAeckF9dKvk+kUeA3fRP4ynA3EzrrWLI5l6s/3Mq+oqowRi1E0zWpB9xkMvHHP/6RTZs20b17d9LS0hg8eDBarQw3bE10JXsAcCd2j3AkoVN0bH5Rqr6+HvDSMEcUuI6JRn49ZOVgiYN28TJnU0SWoiiM7BzP4Y2FrDtsZXLv5EiHFDapaWnodcf/rAZryo7Hqx5fSM3rImbPUnTlB3EldsfedTxomvSn/JTcST2wd9Ng2vclMTs/p7L3dFRjfNDrEUK0bb6e71S0isrU9HzSDY384rbzaOJXvMr/9dzKosEX8+jnW/j9/J28MK0Hp2WaQxu0EM0U8F/tN998k1dffRWHw+Gf/202m7nrrru44oorgh6giBxdyR68WhOeuPb1LuTT0hU69RgUL2atp8b95dpEABK8peEPKkApsTpi9RpySh2M7BzpaISAxBgdXZJN7Cu2U1zpahMLsimKgl6n48UlG3G4vVjMFqw2KzRzUo5Rp+OOKf19CbjXRcyuL9BZD+NK6Y2989iQrlbuTuqGnQmY9n5JzO5FVPa6GHSmkNUnhGhbrG4tSwvTUICpaQEk3wAdTwfAmLuGK6+8EzN27lu0h1s/28UzU7sztGNcaIIWIggC+ss9b948Zs+ezYMPPsgPP/zA5s2bWb58OXfffTcvvfQSX375ZajiFGGm2EvR2ot9w89b6XY0qgrFLgMpBicnLzBcpjk2BN0T/UPQFUWhY6KRMruHcrs70uEIAUD/dr4eiM1HKxs4snVxuD043V6cHq/v32beHO5jXw563cTsXoLOehhnWn/snceFpW12J/XAkTUGrb3Et7e4V9oYIUTzeVT4siiVKq+WscnFpBsDnLJkTsGd1B1D7loARnVJ4KWLeqJRFO5ZuIctubYQRC1EcAT01/vDDz/kySefZMaMGaSlpaHT6cjIyODyyy/n0Ucf5b333gtVnCLM9NXDz5Na7/DzCo8Wp6qpNfwcwKkxYVdMxLeAHnCouRq6ENEgzaInzaJnb3EVTnf9c/lEI7idxGxfgK4iB2dqXxwdz6TWt4Yh5MoYiDN9IDrrUYw5/wtbvUKI1uvHkiTynUYGx5XRI7ZpX9Q6M4eitR6F0hwABnaw8PxF3VFVuOu/u9krc8JFlAooAd+/fz9jx46t87Hx48ezd+/eoAQlIk9XugdVa8ATlxXpUEKmev53sr7ub13LNYktYg44QPsEA1oFDpZIAi6iR3ZaDB4v7C+2RzqUiHF7VA6W2Fl32MrKA+WsPljB9vxKSird/mlcp6SqsPA2dCV7cKX0xtHp7LAm39UcWaNxx3fEULgVfeHWsNcvhGg9cuwmttri6GC0MyKhrMnluNoNPVbgKv99/dtZeOL8rlQ6vdy+YDf5bXAxUBH9AkrAFUVBp6t72rjBYMBub7sXWa2J4ihHW1mAO6Hr8YV/WqFip29eal094OCbBx7vLQM1+nvv9FoNmfEGciucOD3RH69oG7omm9AqsLOw7fVC2BxuVuwv44Nf81m2s5RfD1nZklvJxqM2ftpXzmebClmwqYjNR204TjFCYMzRt2DDR7iTuh+b8x2hFTkUDVVdJ+I1xGE8+AMaW35k4hBCtGgur8Ly4mR0ipexyUU0Z/dUfwJ+4Oca94/qksBfJ3am0Obi3kV7sbvkukhEl9Y5uVc0i67UN5LBndQtwpGEVqHLAKgk1ZOAl2mS0OLB4rWGN7Am6pRoxKvCkTL5tldEB6NOQ+dkE3kVLmwOT8MntBJ7i6p4b+UBtuZVEm/SMrJzHBf2TeHSQWlMH5DKuT0T6Z0eg83pYdXBCj5ZX8CGw1bcnpo94oOKFnPG0Xeh/WCqek2L/HocOhNV3acAELN3CYq77X2xIoRonpVliVR4dJyeUEqcrnl/FzxxHfHEpsPBlbUem9grmetGZLI9v5Invj7QuBFHQoRJQKugu91u/vOf/9T7uMfTdi6wWjNdyV5UjQ53fKdIhxJSRS49CTo3ek3djXL1Sujx3hKs2ujffqdjopEVByrIKXXQJVlWKhbRoWuyib1FdvaX2OnbyreGUVWVVQfK+fWQlRi9lnE9EumSbKy1V3r1KvEjO8ezr8g3PH3NIStb8yo5vUs8XZKM9KhYzfmHnqfUkEnibz+BFXPAFfkpJt7YNOydzibmwLeY9n5FVc8LI9crL4RoUfIcBjZbLWQa7PSzBKFzQ1FwthtKzJ6lKI4yVEPNa7XrT2/HnqIqlu0soVtKDNeMyGx+nUIEQUAJeGpqKi+//HK9j6ekpDQ7IBFhbjtaW65v9fMQ7C0bLVxehTK3ju4x9S/8Ub0XeIKnlCP66N/fK86kIzFGR06pb4vAky/6hYiErAQjOo3CvuLWnYCrqspjC7fy6yEraWY90wZnobrsnGobMp1GoWdaDN1STOzIr2TtISvf7iqlR7yXq52v4NCamdfzGW60pIfviTSCO7UPTlsuhsKtGPLW4cwcEumQhBBRTlXh59IkFODs5OKgfW/nyhxKzJ4l6HPX4+h0Vo3HNIrCwxO7cPO8nby+4gjdUkyc1T0xOBUL0QwBZVjffvttqOIQUUJXdgAFFXdC9CeczVHs0gMKKfUMPwco1/q2IotrISuhg68XfNNRG4U2N2mW1r/3soh+Oq1CVqKB/cUOKp0eYg2tc12JOauOMnflUdrHGxifnYTZqMNaf/NSg1ajcFqmma4pJn7ZX8LuYjfn8zfOyXSQZYzOkUiOjmPQWo9iOLwKd1wHvOaMSIckhIhie6tiyHUa6WuuIFkfvO0MncfmgRty19ZKwAFiDVqemdqN6/69g8e+2s/cy3vTMVFGCYrIkjngogZd2QEAPK08AS84tgJ6qqH++dLHe8Cjfy/wap3825HJgogienRO8l3sHGql2+Qt21HMmyuP0rd9POedloxe27Q/rTE6hVd1L/G2/hkMOoVFuYn8Z1Mhu/IqghxxEGj02LtOBEUhZt9X4JG1J4QQdXOrsLI0Eb3iZVgzVj2vs+zkXmCIw3B0Tb3HtIs38tjkLlQ5vTy4eN8pF74UIhwkARfHqV505QfxxKah6lvvUFGAQqcvAU87RQJu1Vhwo20xe4EDpMfpMek07CtunYmOaJmyEo59MVTW+t6XB0rsPPnNQVJidcy5eniTk2+AMfkf0rv8J9JSkrlgYEf6ZsaSW+Hk/Jd/5LW96Ti90TWtxBubiiNrNBpHOaaDyyMdjhAiSm0si6Hco2dIfDmx2iAnvxotdByBPn8juOv/GzOiUzzXj2zHroIqXlx+KLgxCBEgScCFn9aai+JxtPrh5wAFTgNmrfvUfwgUDRUtaC9w8M136pxspLTKTWlV8IZ4CdEcJr2GNLOeI2VOvN7WsxKt26vyyFJfb8rfpnQjM6Hpwxq7l//COblvk2vqzsKOd6PXaTm9czwXD0ija6qZf+7LZOb6QawvjwviM2g+V1p/3Ald0BfvRFe0I9LhCCGiTKXTzZqSWMxaNwMsIRrN02kUiteFvnDLKQ+7ZkQmwzvG8Z/NhXy5vTg0sQjRCJKACz/tseHn7oQukQ0kxNyqbw54fft/n6hcm0CCt+UMQQffqtMA+4pkGLqIHlmJRpwelbzGToxuAT76NY8d+VVcOTSDoR2bnhhbXEVMO/gkdq2ZeV0ew605nshnxBlYeOsYbumWy0G7id9t6s/f93SjxBUli2QqCvbO4/DqYzEdXI5iL410REKIKPLByoNUeTQMiStHV8+uM02lKIpvwdlOpwNgzF3rv6+um06r4dHJXUk163n624McKHHUOkaIcJAEXPjpyvbj1cXgjY2uFXeDrcihw4tyyuHn1co1SRhVB0Zvy9nvtl28AZPOt+q0ENGi47H1CVrLPPCDJXbeXHmUTklGrhvZrukFqV6mHXwKs6eML7L+TKmxfa1DDDoNN3fNZ/6g9QyOL+fj3Hacv3Yo7x9physKhqWr+hjsXcaD10XM7i/ALfPBhRBQ5VF4/Yc9WLQe+gRj27FjtFotHq9Keno6GRkZ0GEoaPTElWwhMzPzlLe+3TvyjyuG4nB7efjLAyQkp9V4PDUtLWhxClGfKPkKXUSa4rSitRfjSund6vd0zXf43vaNScDL/HuBl1KgiQllWEGjURQ6J5nYUVBFSWXr6W0ULVuqWYdJp+FQmYPhRNcw6kB5VZUnvzmI06PywLmdMepO/C5bQVF8vTyKAqp66vZ0VME8ulnX8mvy+WxLPKfW4yc2x91iq5jbbzNLC1N5fn8Xnt7XjY9zM7mny37OTCqJaNPtie+IM2MIxrxf4btZ0P8PkQtGCBEV5h1KpNDq5JzUSrRBbJ+0Gg1ajcJLSzdhd3mwmC1cFNOT5D0/8fLna0FpuH9xeKc4Vh2o4KJXlzOup2/XG6NOyx1TBqAoCqraeqZLiegjCbgAQFueA4A7vmOEIwm9QBLw6pXQ4z0lFOia0csVZl1TfAn4HhmGLqKEovi2I9tdaMfm9GBuwduRfbm9mPWHrVw8IJWBHSw1HrOYLTg9vrUlzGZLXaf7ZVRsYWzumxTFdOGn7HuxaGt/yWeoXtRNawCdEQWY0q6CsembeedQJnMOZvKnbadxRlIZf+meQzdzIz/zWkPjjguAs8MIdNbDaH96CUPiABxZo4NehxCiZbB7NLy9L4WMeCN94wvwhqA/wOH24HR7cXq8HIjtTwfbVhKs+yiI6drguX0zYjlc6mBHfhUZFgM901pGJ4toHSQBFwDoKnwrQnrisiIcSejlO3TEaDzEajwNHlu9F3hCC1oJHXzD0I06hd0FVfItrogaWQlGdhfaOVTqoFd6bKTDaRK728vsn48Qb9Jy86jjw8Wr5w4696/A6bBj0Btwuur/kk/vdTC5+AVUFf4bczGV+36p8zitOQ6Ptztx4/5c4/444G7gyjI7zyzdzmfr4OJfE/ndqM7ccW42CbH6Bp+Lx6v6VhAOFkVLVY/zsWybR8K3f6Hwkv/gjU0NXvlCiBZjYUEahU4df53YnfLthwj1xJQccz8o+JiOtk2NSsAVReGs7r6tHn/eX06aRU96XPC/mBSiLpKAC1BVtOU5eGJSUPUt86K4sZxuL0UOHR1M9kYN1/QPQW9BK6GDbxh612QT2/Or2HKknNSW29koWpEOx7YjO1QW+QS8qYvtfLIun3yrizvPziIh5niS6y/P6/Hd1GP/UvcXYGdXLCLZU8g35gso0KaDt+5dC7QKaDUK/3z/3zgq655D2RG4tL2e74viefun/Xy0Yi+jkivoF1eJpp6naYy18McrLwMluI2DakqEqS+i/fR6Er+7l+Lz3mjUcFAhROvhVeHdwx2I03m4bHhH/rU99HXmmPsD0Mm2mV9TL2zUOTF6Def0SGTJtmK+3VXKJQNl/rcID0nABRp7MRp3Fc7k7EiHEnI78yrwNHIBNoAKTQJAi9oLvFrPtBi251fx6a+HuHl4SqTDEQKTXkNq9XZkqoomQpOWU9PS0OsC//NXaHXw3toNdEmJ5Q8T+mPQ1ZFYNuI5ZTn3MdS+ghxdF9bENG6YtsPpwumqfwxnstbFb9Iq2VkZy8rSRL4rTGBLuYmxycUk17XjgzOE60P0v4TKLUuI3T4f84a3sA26IXR1CSGizvfFyey3x3BD10LMxvCkGlW6BAqMnelo2xTQee3iDQzJsrD2kJUf95WFKDohapIEXLSp+d+bDvsa18Ym4B5Fj1UTR4KnZW1FBpBm1pNg0vL5+iNcPyQZrXRCiSjQIcFAoc1Fkc1NmqXhYdLBpigKep2OF5dsxOFueBrKif63pxSrw80ZXeN4YcmGGo/FmQz8cULfBnt7daqLKdZPcaFjSdz0oPYOKwr0MlfSLaaK1eUJbKyIY15uJsMTyhgcVx7WRdoqzngQfe464la/iLPdcFwZA8NXuRAiot450h694uW3ncJ77ZRj7seQ4i+Id+ZTbmj8jj4D25s5Wu5kW14l/11/mJGZMmxQhJZckgt05TmoigaPpfb2N63NhpxSANL0jZ+NVK5JbJE94Iqi0Cs9liKbkxUH5FtdER3ax/vm2B0pi+x2ZP7Fexp5K7a52JpXSZpZT4d4Q63HG5vMj7EtI9lTyI/miZToQjPcUa9RGZ1YykXpecTr3KwqS+SLwjSqPOH7k6/qYykd/zwoGhK/uQvFUR62uoUQkbOhwsKv5QlckFZAmjGwLzmbq3oYeqC94IqicE6PBGL1Gh74bBMHS2QBWxFakoC3dV4PWusRPOZ2oA1/b1S4/XqwBIvOg0XX+D8K5dpELN4KtGrdczSjWXZ6DIoCi7cWRToUIQDIiDOg1cDh8pa1V/SGI1a8KgzJsjR5/ng7Vw7Dq/7HEV0Wq2POCHKEtWUanczIyKW32UqOPYb5eZkUOE9q54+trh682/FFjNwpvSgf/QC6isMk/PBXkAUhhWj13j/i2zHm6g6Hw173QXM/ADraNgd8boxey/jsJKpcHh78Yi8OtzfY4QnhJ0PQ2zitLQ/F68YT3/pXP69wadiVb6WHObC5j2Ua30rocd5SSrUta0XfOKOOUd1S+HFfMaVVbpIasTKyEKGk1Shkxhk4Wu7E7VHRBXNz2BCpcHjYWVBFukVPh4SmrZKrqB4mV3yKioYlcZegBnnxs/roNCpjk4vJNDj4X0ky/83PYFJqIdkWDR6vimXcXUGv0+M9nmhX9rkUw+GVxOxdimvTXGwDrg16fUKI6FDg0LGsKIWRCaV0j60CwrvYZqmhHRW6FDoF2ANerUOikdvO7cmLX+/i5f8d4p6xnYIcoRA+koC3cdoK3zeU7rgOEY4k9DaVmVBVaGcKrCe7/NhK6AmelpeAA1w2ohM/7yli4ZZCfje85exlLlqvDglGDpc5ya1wkpVojHQ4DQpG7/eQqhWke3L5OXYchbrMIEfYsD4WG4l6N4sL0lhckIZqsDe4unpTGE2x/PF3v0VRFN8WiIpC2dl/R1+8k7iVz+JK7Yuz/Yig1SeEiB6fHE7CrWqYmZkbmQAUhYPm/pxWthyjx4pDawm4iFvH9eR/23P5bGMhQ7PiGNczKQSBirZOhqC3cVrrEVRFhze28YtVtFQbymIAaGcKrAe8XJMItMyV0AEm980kJVbHZxsLa/RMCREp1b3IhyM8D7wxrA4PuwqqyLDo/fPXAxXrreDMymWUaRJZEXtOcAMMQDujg99k5BKr9fDFYROfbzjiX109WDeHs/bUAtVgoWTiK6g6I4lf34nGlheBZy+ECCWPCh8dSiFV72RscnHE4sgx90NBJcu2pUnnazUKj03pSlKMjie+PsCh0uj/OyVaHknA2zKvB601F48lEzStf8XHDaUxGHQa0oyB9YAf3wu85a2EDmDQabiofxq5FU5+ki02RBRIitFh0mk40gLmgW/JteFVYWCHpvd+n2NdilF18K3lAtxK05L4YEnWu5mWnodFp3Lnx+vZYw3PtBR3UnfKznkCbVURSV/dBp7o/90LIRrvp5JEDlUZmJ6Rh14TuS/7T9wPvKlSzXoendSFSqeXvy7Zh1Pmg4sgkwS8DdPY8lBUd5tY/dyrwsayGPp3SCDQKaflx+aAJ3hKgx9YmFzUPxWtBuZtyI90KEKgKAodEgwUV7qpcoV3ldxAONxeduRXkRSjI6uJc7/buw7Q37GWffqe7DT0DXKETROv83Bpl0qSYvUsOWrhsD080wDs3SZjHXAdhvwNJPz4uCzKJkQr8nFuJhpULsmM7AiXvJhuODSxdLRtbFY5IzrHc/XwTLbnV/KPn8K/oJxo3SQBb8N0FYcA8MS1/gR8b1UMFW4tQzolBnyuQzHhUIzEe1tmDzhAmsXA2B5JrD5Ywa68ikiHIwTtE6q3I4ventBteZW4vCoD2pub1PutqF4mWD/Hg4avLVMJ60bcDUg2qrx/w0i0isqXRamUucKzJEzFyLtwZJ1B7PZ5mDfNDUudQojQOmI38kNJEuPSKmhnjGybripaDsWeRofK7Wi9zYvl+tPbMai9hU/WF7B8T2lwAhQCScDbNG35Id/+3+aMSIcSchvK4wEY0qkJi2koCqXaZBI9kZvTFAwzB/n2HH7t+z0RjkQI6BDv63U9HKUJuNursiW3ErNBQ7dkU5PKGGBfTab7MGtixlCsi751NnpnxjOlnQ2nV8PiwjQc3jB8QaDRUTL+BVyJ3Ylb8QzG/d+Gvk4hREjNz8tAReGKjtGx5elBS390qot2VTubVY5Oo/DYlC4kxuiYtewAR8tlPrgIDknA2yqPG23FEV/yrWn9i+FvqIgDYEjnpq1mWapJJs5bhkaN3uGyDenfzsKwjnH8Z/1hckrtkQ5HtHFmo5YEk5bDZQ7fatlRZndBFXa3l37tzGg0gSemOq+DMZXLsCkWfo49NwQRBkcXs4tRiaWUuvV8XZQallHhqjGekimzUU0JJH5zN7qi7aGvVAgREi6vwmd5GXQw2jk7NTpG2FXPA2/KfuAnS7cYeHhiZyocHv66ZB8uj8wHF80nCXhblbcJxetsE/O/AdaVx9PB5CQjvmk9WWXaZDSoLXYl9GrXj2yHV4W5v0RoixAhTtAhwUily0uZPbq+2PKqKpuO2jBoFXqlxTSpjKHW5Vi8FfxkPhenJrq3WhtgqaBXrJWD9hj/l5Wh5onvSPHEf6B4XSQv/QMam6xPIURL9G1xMkUuAzMy82jCd5UhcTi2Nx60Td4P/GSjuiRw1dAMtuRW8tpPR4JSpmjbojIBLy0t5S9/+QsjR45k+PDh/PGPfyQ/3/fHecOGDcyYMYPBgwczbtw45s2bF+FoW6j9PwHgaQP7f+c6DOy3xzAipbLJZZRqkwFa/DD0wVlxnN4tmaXbilrEFlCiptbWNkbrdmQHShyUOzyclhGLXhv4n8lYr5Vh1m8p1qawwRT9e14rCpyZVEKizsWqskTyHeFZqd3VbihlZz+O1nqUpC//BG4ZmSMC19raxZbmk9xMdIqX36RHz5dobo2Jo7HZvh5wNTg91jeNas+AdmY+WpfPN7ta7ppAIjpEZQJ+6623UllZybJly/juu+/QarX89a9/paysjJtuuomLLrqI1atXM2vWLJ588kk2bmzeSodt0oGfUFHaxPzv1WUJAIxIbn4CntDCE3CA287tiUeFN1cejXQoIkCtrW3MjDOgEF0LsamqysYjNrQKnJYZ26QyRlV+g0F18IN5Ml6lZWzxqNeoTEgpRAG+KkrFGY754EBV9kVYB9+MoWATid/+JWgXy6LtaG3tYkuytzKGX8oSmZBSRIrBFelwajho7k+Mp4I0x4GglKfTKvz9vK4kx/rmg+8rqgpKuaJtirrJv5s3b2bDhg38/PPPWCwWAB5//HEKCgr46quvSExM5IorrgBg1KhRTJ06lQ8++IABAwZEMuyWRfXCgZ/xmjNAG9k9acNhVXUCntT0BLxM0zp6wAFGdUvh9M7xLN1ezEX9UxnY3hLpkEQjRH/bqBy7NZ5BpyXdoudouROvl5PmWkdmLGNuhZNCm4ve6THE6ANPnhNcBQyuWsVRfSd2GPqHIMLQSTW4GJ1Ywv9Kk1lRmsjZyeHp5akYfjva8hxi9izGs/IZKkbdF5Z6RcsX/e1i6zYvNxOAmZnRN60tx9wfCj6ho20zBaauQSkzzWJg1nnduOWzndy7aA+LumcFpVzR9kRdAr5x40Z69OjBJ598wkcffURVVRVnnnkm9957L7t27SI7O7vG8T169GD+/PlNrk9RlCZtLxMq1bGEMiZ98U6wl+JpNwylsRe5yvF/FbWuc5TjjwflwrmR5TUQl6rCL2WJdI2pJMPkqePExinTJqGikOgtruPc2olH9a9PUUCt8/WqS/XvPvD4Gi7z+L+KovDnsZ24/N0tPP99Dm9f3gdthCduheN93xTRFE8428ZA2sXq4yxmC84mLE7TJc1B3r5irF4d7eOPz7c2HBv6fXIczX2vHD+v7i8MNh6pRMG3aGEgn8PqYs8oW4gWD/9LCMW2Y8F/PyonvQ59LTb2VMWy1RZH99gqskxNmx4Q0N9WRUvZ2KfQ2vKwbJyLN74jlf2ujNp24URtNcZoeb7Res3oPyZo10T+kk9dboPXak0stw5VHg2f56fTPaaSYfEV9dQd6i9VlXqvtw6Z+wG+hdh+Tbmw0eX5yqo/1sFZcdx2ZhYvLD/E3Z9s4LGJWWH9PESyzYlU3S2l3kDii7oEvKysjB07dtCvXz8WLFiA3W7nL3/5C/feey+pqanExNRcEMdkMlFZ2fSezZSUlOaGHBIZGSEcGn7gcwAMaT0wWALr/bSY6zneYPY9HmsGj75Z4TWlvPriOlBp4KjDyFUdC7HE+oaTGvSGJgxzNGDVJpDkLcFg8I0a0Ot9cZljzejrSTzM9b1edR1r0B4rz1JveYGqTmJOfj8N792Z68+s5PXle/nuoJMrT+8clPqaK6Tv+xYunG1jk9rFw2vBEfgc3k5OHatI5ODenbQ/cZ0GownoUe97ornvlbq+MCiocHCozEHPdAvtUxMDKi/WoIWjG+lV+St7jX04bOxBMMYXVbczBr0BPMEb4lldrl6vR/XUjHRiRgUf5Bj4viSFKzsWYdA0fml0g95XVnp6E7Zd+918eHM88T/NIj7rNOh9HtAy2gWJMTLCfc2Ympoa0PFBuyaq1shro3qv1ZpZ7omWHE6i3KPjrs55xMUdr69G3THNue6qX13XX7WvtywUxXShc+UW/+iIhtR3zXSy2yZnsLfMy3/XH2Fgx0T+NLZHYE8gCCL5eY5U3a2p3qhLwKuTmwcffBCj0YjFYuGOO+5g5syZXHzxxdjtNS/w7HY7ZrO5yfUVFRXhckXPvBVFUcjIyCAvLy9kW/Mk7vgGEwpWfQpYrY0MzNeoWm1WqCssk4IFsFbawBWEBZUaW14DcX2X67sIHBJbiLXSV6bT5cTpDHzOaakmiVR3nv9cw7H5TrZKGw5XzVWcFcX3x8BmszZ+Wx+T7lh5VhyuICXgOt8fk+r304nvr5l94/lsjZ6nFm+jX7JCZnzkpiOE433fFHq9Pmq+pAtn2xhIu6jRaEhPT8fpqMLZhAQ8SQG9Es8Bm5YhlhPn1PneB/n5+Xi9xz8PzX2vVJ9vtVlxumt+zlbtKQWgT5oRa2PbxupyY3Tw/VMALI+dCNCkduZkhmO/h6a2Ww2V63K5apUbA4xMKOPH0iR+LIhhTFJp4wtWfG3Oyb+3xtJOmk3Kgpkw/zpKpr1PSv/xUdcunCha264ThSJGnU4XcDIaCuG+ZiwsLMTtdjd4XHW7GLRromoNXRs1dK3W1HLr8O7+rsRoPExKOITV6qm7btXYrOuu+px4/eV0e+q93joQ05chxV+gFO+jwpDWcLknXTOdyp1jMtiRW8GzX+4gK9bLyM7xTXsyAYpkmxOpultKvYG0i1G3CFuPHj3wer01Lv6q/4j36dOHXbt21Th+9+7d9OzZs8n1qaoadbeQxuX1oj+6GjL7o+qMqI3873hjSv3HNPB4oP81pryG4qqe/z0soex4mdUnBHgr1SQRo1Zi9FZCA2VVf059/wZST1POaUyZtd9fsXoN953bCavTw2Nf7sPt8bbe930z44oG4Wwbm/4aBf7+1CoqHYx28pwGnN4Ty6g/lqbEWDvemnFUONzsLaqiXbyBNIs+4OeRZt0BO75gV8xA8nUnbu/Y/M9v8MqqXa5az+P9LBVkGhxstloocOoCL7eJvxt3fEeKJ7+GonpJXHwzlByIeBvQUtuuUMcYDaL5mtF3gu8zFsz/TlWu/yPYhHoDOW+LNZZN1jimpBZi0blPWfcJr14Qb8fL9L/Uau06qvcD72TbGFDZjfn9mnQaZl85FLNBy1+X7OVImb1Ff56jve6WUm9jRV0CPnr0aDp27MgDDzyAzWajuLiYF154gfHjx3PBBRdQWFjI3LlzcblcrFy5koULFzJ9+vRIh91iaEv3oa0qgs5nRDqUkPOqvgXYeputJOob/sa6Ia1pJfRqo7smcPGAVNYdtvLRr3mRDkecQmtuG7NMdlQUDjtMEYthS64NFRjQrmm9Y6cfmgvAyoQpwQsqgnxbk/nauh9KkgnguqLZXBmDKB33f2iqiuCDGSiOsvBVLlqU1twuRrNPqhdfaxfdu6kcsPgW2+tk2xDQedVz/Ru6dUk189iUrpTbPdy3aC92t7feY4U4UdQl4Hq9nvfeew+tVsukSZOYNGkSmZmZPPHEEyQlJfHWW2+xdOlSRo4cyUMPPcRDDz3E6aefHumwWwzD0dW+H7q0/gR8m9VCscvA6QnBuXgrq94L3Nt6EnCAW8dk0SnJyOsrjrLhSGDDbkX4tOa2McvkGyZ6yB6ZBNzh9rIjv4rkWJ1/b/JAZFbupHvpj9BnKoWG1rMqbqrBRX9LBflOI9tsTR+22xT2bhN9q6EX7iBp6S3giZ6t6kT0aM3tYrSqcGtZXJBGP0sFfS22SIdzSmWGTEr1GXSxNi4B12oUPF6VjIwMMjMzT3mrnhc8fVQv7hyfzc6CKv7vh1zS0+s+NzWt4SHwou2Iujng4Jvs/sILL9T5WP/+/fn3v/8d5ohaD2N1At5pNOz/NbLBhNj3JUkAnJ0cnIS5ugc80VMSlPKihUmvYdaUrtw0byf3L9rLW5f1juh8cFG/1to2JurcmLXuiCXgW/MqcXtV+rczN6mn4uy8d479cB8sXhfk6CJreEIZuytjWVmWSPfYSowBLMjWXJUDribeU4Thl3+R+P2DlI57JgQry4uWrrW2i9FqUUEaVV5tVG49VpcDlkEMLPkSi6vIt/bRKWg1ClqNwotLNuFocK6/4p/zrqpeuqeYWLwpl5ml/2N4p7gaRxp1Wu6YMgBFUQIapixar6jrARchpKoYjq7GldQTzNGxsFQoLS9OJl7nYlB8eVDKK9W0viHo1XqkxfLwxM6UVLn5y6I9VJ20qJwQoaQo0NFkp9Stx+oOfO/t5nB5vGzJtWExaumWEvgXAO0qd5BdvoJdSWdDZr8QRBhZBo3KqMRSHF4ta4+tqRE2igKTn8LeZRwxuxdiWfNyeOsXQtSgqr7h53FaN5NTCyMdTqPstwwEoHMje8EBHG4PTre34ZvH96/LozKmawIpsTrW5FSwI6+yxnEOt1xTiZokAW9DtOUH0drycLYfEelQQi7XYWCbzcJZSSXogtRhYtPE4UJHYitMwAHO6ZHEDae3Y1dBFY8s3Y/HK9/SivDpYIzMMPSdBVU43L7eb00TelfPynsXgBVZ1wY7tKjRM7aSNL2DTdY4ytxhHjin0VJ27nM40/oR9+trxGz/NLz1CyH8fi2PZ3elmWnp+cRog7etWCgdsAwCoHOA88ADpdMqTMhOIkavYfneUgpt0bPDkog+koC3IYYjvwC0iQT8h2Jfb3Wwhp8DoCiUaZNJaIFzwE9eCKS+RUKuH9mOyb2T+d/eMl5YfqjOY4UIBf888DAuxOb1qmw6asOk05CdFtPwCSdJr9pLdvkKtiWcSVFs9xBEGB0UBUYnluJFYWVpYtjrV/WxlEx+DbelPQk/PIwh58ewxyCEOL742owWMvwcjs8D72xdH/K6zEYt47MTQYVlO0qodErPt6ibJOBtiPFYAu5qPzzCkYTe9yVJ6BQvZySWBrXcUm0yiZ4SFLVlfPN78oIi1YuG1LfASLt27Xj5ypGM7p7CpxsL+HxnpSwkIsIiVuslRe8kx24iXIMv9hTZsTm99MuMRacJ/Mul0fkfAfBT+uXBDi3qtDc56BpTyd6qWI46wr9GhDc2jZLz3kDVm0ladju64l0NnySECJpil45lRSkMjy+jW+z/t3ff8VHUif/HX7O9pVdIAqEFCBAIIIggigjYsIBYUDy7nnq2s/s7vTvvLF/v9Gzn6dnOsyEqKqIHKopIR3oPJZUkpG6yu9k+vz9CkEAq2d3ZbD5PH/vgbnd25j2bnc/OZ+ZTGpSO0yn5llEkuoqweKqCvq1ki45J/WNwePx8t7cWr2hNKLQgLAdhE4JAltGVrsMTNwi/MbL7fzt8KtbWxjImuo4oTWCvPtaoExjIbqL9tfiIDei6g+HEAUV+HTTkxDmGfzUkUcvuUg1PfbOb9fvLGXTk7qAYSEQIpkxjA7/UxVDm0pMZ5Bvhsiyz9ZANrUpiSIqp0++PdR1iWO0PHLCMptQ0BEsQMoabU2NqKWgwsqo2jlnJ5W2OhxaIFjPHttgB8MYNoGbGS8QvvoG4pXdQecknyPqotlYhCEKAfF6egkdWdZvB145VYBnFqJol9LVtZkfc1KBvb2CikRqHl62ldn4+YGXa4Ligb1PoXkQFvIdo6v/tzAx+waO0lTVxuGUVZway+fkRNepEAOJ8lVSSGfD1B0vTgCIgHR00pK0KuARMy4pj0Y4qluXVoFNL9BIjowtB1t/o4Je6GA40mMiMcQZ1W/nVTmqdPkb0MqPXdL4x2ISKj1HhZ2Xy3CCkC0+xWi/DLDa22aLY12BikMlx4kJHKsvJyckB225Tyx2f181hxlN36gPErHqS2B8epGbGyyCJxnyCEBAaHS2dG/hlWFCeSoLWw9QUG6j0LbxZArUONPpf16EOj/OGgmMGYgtFBRxgbIaF2gYv+6ucxBbVh2SbQvchKuA9RNP83z2h//c3lYlIyExLCHxTo18r4FV0j/E/T55Fr2b64DgW76zmu701XJCdQIqohAtBlKD1EK32cKDByBQ5eBVwWZbZWGxDLcHw1M7f/TZ7qhlV/Q0lxsHkW3KDkDB8jY22ssduZl1tDP2NDtTH3+Q+Uhm2L3sev6trM1BISFjMZmx2O2h0WKY9hCRJOIbPQ3d4K8Z9X2HZ9Dq20bd2aTuC0OOp1Pj8MpZpD7X48o97DlP803punzKA+BkXt7mqFlsDKXyRzKpLpUaXSqZ9c8i2KUkSZw6M4etd1fxSZOPj9UVMztCGbPtCeBMV8B7i6ABsvSK7/7fNq2Z5dTxjoutI0bsDvv5qdWPz/XhfRcDXHY4SzFqmZsWyZE8NS/ZUM3uk6P8tBI8kQX9TA5vroyl3Be/n6ae8Sg7bPAxJNmLSdX7as/GVn6KRPaxKvrLHzUttUPsZFV3HOmsse+xmsi32FpeTfS7wurq4NQl8WvC6kI+9KydJWCf/GU11Hpb1L+BJHIarz+ld3JYg9GCSGrVK4p/vfoDLeWLLlkVlcYAex77VPF/Q2iCIEjqdDrfbTdMdcEtMLDddfmlYlJMF5pGMqlmCxVOJTZsYkm1q1SqmZcXx1c5qHl64jb9fOIDxfaNDsm0hvIl2Wz2BLKM/tA5P3MCI7/+9rDoet6zi3KTgVJDrVbF4URPnC/5AHuEiLUbPpH7R2N1+vt5Zjc3lVTqSEMH6GxtP/vbZWmri2HWyLPP8t3tRSTCyd+d7but9NsZUfkmlvg+7YyYFIWH4y7HUY1D52FAXg1ehoSBkrYma6S8h66KIXXYfKlupMkEEIYK43G7cHk+zR3WDn4MOPX0NTgw4T3i9zYc7fM4Xjk5H1on5wAPBpFNzfnY8Fr2GRxYfYG9FC113hB5HVMB7AHVdEWp7Ge5ekd/8/OuKJDSSn+lBaH4OIEsqatUJxPkivQF6c1lJJkanWai0e7j9/Y14fWIANiE4knVuzGov++z6oAz0tzq/js1FtQxNMWHRd/7u95jKLzH47axMvkLxZpVK0apkRkfXYfdp2GEL7SBox06J6I/ti/WsZ1C5rMQtux9J9rU6xWJbD0EQWrfTbkFGItsSjv2YpaM31xv/lVp9NFXAM22b21wuGOJMWv59zVg8fpnff7Gf8vrAt9AUuhfRBL0H0JX2jPm/qz0a1tTGMjGuhlht8K66VqsTGejejUruWfM7jkoz4/D4Wb63gme0fh6e2kecvAoBJ0nQ39jANlsUu0rrSeh8HblVsizz+upD6DQqRqd3vuKo8bsYX/kpVm0S22Mjf0DLtgyz1LOlPoqNddFkm21oVUG+KKdSg997dEC2o1LnQs1WdGtfJXXPuzDlkU6v2ud1c7ii57RqEoSO8smwy2YhSu2ljyG4A2N2ypFzD7PJjNbXOC2s2dx2iyYfA7Hqe9PPsQ2LpeVlzSfRJamjxvWL57Hpmfzhm4Pc+8U+/jk7ixijqIb1VOIv3wMc7f8d4fN/L61MxIfEuYnBvTtdo05EhZ8ob886YZMkickDYkiONbNoRwUDEoxcnhu4kY4FockAk4Nttig+31zCDWPiA7beFQes7D7s4NrTMjFK7iOzAXTcyOr/YfHWsKT37fhVPXswHY3UOCDb8poEttqiGBPdtQHX2qVSg0qD/dtn8HuPqwj4tZhMyaiWP0ND+X58MX06vFpJoz86uJuYWlEQmjvYYMLhVzM+phZVOF1vP9L6yFOwHrfThk6rw+1p/65ygZRGjnM9+j1fUK+OPeF1nSUKGBC0LuvTBsdTYXPz4ooS7v1iHy/OGhTUSr8Qvnpm+7mepAf1//78cDJGlY+zgtT8vEnNkYHYYj2Hg7qdcKRWSfzzqtFkxOp5ZWUJeaIvkxAEqToXMRofn20swesPTKXI65N5ZWUJBo2K284c0On3S7KPCRXzcaij2RR/XkAydXeDzXaiNR4210Xj8ofm7Fz2Hhnc7diH30dDv2mg0mDY/w1SQ+2Jy7TykLs8UJwgRK7tNgsqZIaabUpHaZEse8HvA9nX+K/f2+YjX9tY9me6dreyTPBbNl45OoVrx6Wys9zBA4v24+zkhWAhMogKeIRrnP+7LOJHP99tN7HDFsW5iZWY1MEtzJqmIovpgRVwAItew5/P7Ydflnnsf/k4PeLHQwgsSYKh0U4qbS7W5FsDss6F2ysorHExb2wKydGGTr9/WO0PxLnLWJc4C4/aGJBM3Z1aglOirbhlFZvqlB3ZVzbE4uxzJiqPHX3BMhB3swWhS6rcWkpdBgaaHBiDfF4VKgW6gQBkuvMUzXHzqb24dGQSG4tt/OHrg2JcnR5IVMAjnL54JQDutAkKJwmuz8ob+wXOSi0L+raaKuA98Q54k6EpZm6d0Jv8aicv/1yidBwhAg2NciJJ8NnWrs9oUO/y8uaaUhLNWuaOSWn/DceT/Uw8/CEulZH1iRd3OU8kGWhyEKdxs80WhcOn7CmFN2EwnrhBaK35aKp2K5pFELq77bbGftLDw3LwtZPjUFkoV/eir3sfyMpdVJAkiXvOSOfcofH8fNDKn5fm4wtQay+hexAV8AinL1qBLKlxRXAF3OmT+KoikYEmOzmW4DeTqldF4UHbY++AN5k7JoVRaRY+3VrB5pLwbJ4mdF/RWj9nD01h1UErRbVdG/znnXVlWJ0+bj2tN0Zt5/vbDapfS7LzIBsTLsCpEXO4HkslwbgYK15Zxca6GKXj4OwzGb/WjKFoBZIryP3SBSFCufwSex1mkrQuknWRNWJ3vm4QZtlOsi/4N2zaopIkHjm7L5MHxPDt3hqe/aEQv2i502OICngk87nRlazFnZKLrA/tVDEBo9GBRt/mY0llPHVeLZf0qkbStrGsWheYTJKKGnUCsd7gzDXeXagkiUem9kGnlnjyuwLRj0kIuOsmZiIDn2w5+WNtb4WD+ZsPMzjZyLlDT2JAN1lmYvkH+CQNa5MuPekckayfsYEkrYsdNgv1HoVPKzQGnJlnIfk9GPK/F03RBeEk7LGb8coqhltsQRuQTCn5YdIMHUCjknjinH6M7xPFF9urePK7QnEnvIcQo6BHMF3ZRlReB66MSUpH6TyVGp9fxjLtoXYX/ej1NWjV1Vw593qizB2oZAdg7t4adSKD3DsaB/LpwTLiDNw0oTev/FzCm2tKuX1SmtKRhAgyoX8Cg5KMfLG9kmvGppJg7tzI416fzF++LQAZHp7aF9VJnEn2sW8lw7GDjfHnUa9N6vT7ewLpyF3wxZXJrKvufP/6QPNF98GdNAJdxTa0h7fgSRmldCRB6DZkGXbYotCrfAw0Rd5Aq8XafnjRkOnexzrTGUrHQadR8czMATz81QEW76zC6/Pz/6ZnogmrYeeFQBMV8AimL/oZAFfG6QonOQmSunHE7Xc/wOVs/Qegyq1ldXEiWeYG/vP+u22u0hITy02XX0ogLudWqxNRIUP1wS6vq7u7IjeZZXtr+HBTOecNjadfghigSggMSZK46dTePLBoP//dUM7dZ6R36v3//aWMvIoGrj0llcHJppPKMPHwh/hRsTr5ipN6f0+RYXCSqnOy06qnoMqO0nNuuNInoKkrQl+yBl90RsTPAiIIgVLi0lPr1TIyqg6NKvLuxnolLcXavqR7DqKWPfgk5aeU1GtUPH1Bf/7wzUGW7KnB45f504x+aNSiEh6pRBP0CKYvWoHPmIA3cajSUU6ay+3G7fG0+thY03i3ZZi5rs3l3B4Pbrc3YLmqNUfuhFXuDdg6uyuNSuL3UzLw+eH55cViLl0hoCYPiGVwspGF2yo61Rc8r8LBW2vL6J9g4LpxqSe17VRHHgPr17ErZjLV+s5V/nsaSYLxMVb8SPzjO+WbdqLS0tBvKsh+DAe/C8n0QoIQCbbURyMhR9Tga8fL1w1Ci5d0T0FItytJUqsPvVbNk+cP4KxBsSzLq+X+RftxuP0tLnvsuoTuSVTAI5TKXo62eg+u9EkBaXIdjhoHCTGRrPOQEuJBQirVyY3/o2JPSLcbroalmjk/O4H1RfUs31+rdBwhgkiSxF2T03H7ZP72Q1GHLvDUOb08vPgAAI+e3Red5uTKwImHPwBgVfKVJ/X+nqa3wUUfk4fPN5ew36ZXOg5+cyruXmNQN1SiK12vdBxBCHtVbjWFTiP9jA1EayL3olW+NrT9wNUqCZ9fJiUlhdTU1FYf6Wm9eP3aCVxxSgZrCuq44/MDYIxttkxKSuNMHk3rSkwSXaO6I9EEPUL92vy8G/b/7qDddgteWcXImPqQDxJSfbQCvhsM00K78TDQ0lXX2yam8eO+Gl74qYQJ/WIxnGSlRxCOl5sWxfnZCSzeWcWCLRXc2atXq8s6PX4eXHSAEqub+6dkkJ1qbmVJ6cijZfGuIoZafyIvajxlpqx2M4obEY0mJDgoLIrh5QMpPJel/ECV7l5j0VgL0JVtxBubid98cq0hBKEn2FTb2IVsZFRkzyBQrumNQzKR6dnH8hBsT62SUKsk/vHNNlze9ltjxmplxvWJYl1hHVP//gPnZyccMwaKhMVswWa3odeouPvcHCRJEq0PuxlRAY9QhoNLG6cfi9AKeOMgIRYMKh9ZFif+wLUu7xC3Sk+9Op6oij2QEdptK+nYq7jHSwXune7lia928vluG3ef3X6lpYmnAz9IQs929+R0th6y8cJPRYzol8rQFma8qnd5eWTxQTYfsnH5qGQuGZHY6vosZgtuX+sj908u/RQJmU19b8BisbSbz6Tr/PRmkSjV6OPsoSl8uwt29jaTbbErG0hS48ycimnXAowHv8eefRmolO/zKQjhptLmYne9gRSdi1R9ZE09dgJJRYFuIENc2zD67TSoWrtQG1gurw93B2eMGdHLjFGrYsUBKwu3VjJ5QAyZ8QZAwu3zH1mPqHR3V6ICHoEkVx364lW4005FNsQpHScoCp0GrF4tuVF1aFSgxE9FtS6VqMq9SOmR20zreO1dxfX5ZeKMGl5alkdljZUoQ/tFjF6j5u5zc4IRV4ggFr2aZy7oz60L9nLTfzbwu9PTmJWThEbVeOV/Q1E9z/5QRFGti1kjErlzclqLLTWannPnr8btarlPeZSvluzKryjWZnKwog4q2r9HoouKAQZ0aR8jxb3TsvhuVzkvF/bhn9m7lI6D35iAq/d4DCWr0Jes6Z4DkwpCkP13dQE+WYr4u99N8rUDGeraSl/3PnYbRiodp0UDE42YdSqW5dXyfV4tI3qZGZvRTacVFpoRFfAIZCj4AcnvoaH/DKWjBM12WxQSMsMsNkCZO0812l70bdhJjKsUp7r1JrGRqK2ruOP7RvG/3TWsKajjjAGxoQ0mRLR+CUZeu2ww9y06yPPLi3lnXRn9E4yU1bspsbrQqSXunpzOZaOS2h+cxu+jtaYzp9h/QI2P1cYzW13mBHLH7mr0BNm9ozknuZb/HY5nc10Uo6KVH8zJkzISjfUgusNb8cb0wxctBtUThCZOn8R7awqI1vjoZ2xQOk5I5OsGAdDPkxe2FXCAXtF6LhqeyLK8WraV2imvd3PuCL2owHVzopNmBDIcWIIsqXFmRmbf5FqPhkKnkUxjA1EKDhJSrWusdCc6QzuKZrhLi9GTFqNjX6WTSrtH6ThChOmXYOTbeydz84TeJFq07DpsR5Zl5oxM4oN52Vyem9ylkWGNfjsjG9ZxWJ3KAd3gACbvWW7vX44KmZcK+ygdpZGkwpk5FVmlwVDwPfhcSicShLDxVWk0VXY3o2Ib6CnTT9ep46hSJ9HPvbexX2MYs+jVnJ8dz/BUE4dtHt5fW8jOMjv+MM8ttE5cQIkwktuGvvhn3L3HIRsjs/n51vrG5jc5Ck+RUa1trIAnNOSD+VRFs4SbUzKiKLFWsb6wnnOHxisdR4gwJp2G68f3OunpxdoypmEVOjysMU0RI6t1QT+zm5nJh/nicApra2MYH2tVOhKyPgZX+kQMhcsxFP2MM3Oq0pEEQXF+Gf5bEE+UQcOwaCf0oOvm+3VDGNewgmTvIQ5r05SO0ya1SmJ832j6xBlYcbCO1QV17KtsYMaoGnrrlE4ndJa4Ax5h9AU/IPncOCO0+XmDT8Vuh5kkrYteemXvYNToGk/+ExsOKpojHCWYtQxMNHCozk1xrbjTJHQPOr+TMQ0rqVElsFs/XOk43d5vM4rQSH5eLOwTNjeYPInD8Eb3QVu1G3WtKLsF4YfqeA7Y9cwd3wedKkwO1BDZrxsCwAD3boWTdFyvaD1Xj+/LiF5mqhweZv1zFQ9/tZ99FQ6lowmdICrgEca4/xtkJJyZZysdJSh22Cz4ZBUjo0M/9djx3CojRPUmQTRBb9GY9CjUEqwvqhfTYwjdwtiGnzHITlabzkSWxKjmXZVmcDE7pZyt9dGsqAmTFlmShLPvFGS1vnG8FE/P6O8qCC2RZXi9KAO9ys+Nk/orHSfkirWZuCQ9A7tRBRxAp1Exrk80l41K4uyhyfywr5Z5H+zmgUX7WZ1vFU3TuwFRAY8gKkcF+sLluNIn4je1Pv1Od+WVGwdfs6i9DDCGyZW+pMGNFXAxANMJLHo12almqh1e9lW2PNq0IIQLvb+BUxp+pkaVwA7DaKXjRIyb04vRq3y8UNAXX5icE8o6C86M01F5G9Dnfxf2/T8FIVhW1say025hdnotSVF6peOEnF9Sc1CXRS9vMUa/Tek4nRZn0vLGb07hnblDOb1/DD8fsHLvF/uZ/fYOXlpRwpZDdvxy4+wfnX0IwSX6gEcQ494vkWQfDUMuVTpKUOy1m2nwqzkttiZ8BglJGoL2wA/Eusup1feskdA7YmRvM3sOO/iluJ5+CQY0YfOHE4Tmmu5+f2+ZiV/c/Q6YZL2bq3qV8lZJOl8cTmZWymGlIwHgjc/CU3sQbXUebPsEksXUZELPIsvwWlEGGsnPdZnVSsdRzH7dEIa4ttHfvYcCeisdp1PUKgmfX+bMnP6cmdOfomoH89cX8enGYj7YWM4HG8ux6DWM7htHbkYsg1Is9E+00C/RjFHX9u+cx+ulsqIiRHvS84gKeKSQ/Zh2f4zfEIsz8yyl0wScLMPW+mh0kp+h5jC6Spnc2H8o0VUgKuAt0GtUjEqzsK6wnp1lDnJ6m5WOJAgn0PsdnNLwM9XqRHboRykdJ+LclF7M54eTebGgLzMSqjArOHvFUZKEq88ZqG2lqL7+PapLF+EzJyudShBCZkNdNJvro5mdUkaqoYPTLUagA7rByEgMcO+hgClKx+kUtUpCrZL4xzfbcHl//RteNCyOCpuH/Gonh+rcrMyr4Ke9zSvTRq3qmIe62f+PNmi5/ows5AY3sUY1Rq24KB1oogIeIfRFK9BYC7CNugnUkTccYqHTQI1Xy6iouvAaJCSpsQKe7DzIvmgxEnpLslNM7Cx3sOWQjcHJRvQa0fNFCC/jGn5GL7tYarpY9P0OAovGxx19Cvnz/oG8WZLGnX0LlY4EgKw14uw/DdPeL4hZ/ijV574uRr4XegRZhpcL+6BG5oa0EqDnXhx3qCyUatLp797Dj3IYXBw8CS6vD7e3eVfIWKOGUWkWRqWBzy9T0+DF2uDF6vRS2+DD4fbR4PVTYfPg9rlPWOeiHZXN1tUnVk/feAMj+trpY5YZIs7nukRUwCOEedt/kCU19mFzlY4SFJvro1EhM0LhqcdOkJwNQErDPoWDhC+1SmJMuoXl+61sLrExvm+00pEE4SiD38GYhpVUqZPYpR+pdJyINSulnA9Le/GfkjQuTSmntyE8ZkfwxQ2AUVeh3/w+pl3zcWRfoXQkQQi6n2tj2VgXw6UpZWQYnfTkCjg0NkPv7Sgi1blf6ShBoVZJJJq1JJq1Lb7u88s0ePw4vX4aPH48fplTB6ZScLiGaruHEquL/BonW0vtLNpRBYBWLTE0xcSY9CjOHBhHVpKxQ33HxaC8jUQFPAJoK7ahL15FQ/9z8Vsirxl0hVvLIZeBQSY7lnBoungsQzTV+nR6NeQpnSSsDUgwsL3Uzs5yB9mpJqL0ougRwsM4x0/oZRdLTFORJXE1P1jUEtzf7yA37xjOPwr68n+D9yod6VfnPIVv3w9Erf4/XGmn4ovJVDqRIASNX4aXCvqik/zcklGkdJywsF83hNMd35LZsF3pKIpQqyQsejUWfWMLMKNOzY2n90d93Lg91XY3u8vq2FhQw/r8GjYW1LD1kJ2315WREW/kvOG9uDg3jaG9Wr/RIvqWNxJnwRHA8surANhG36pwkuDYXN94II+MqlM4ScsOmwYxuOZHdD4HbrVJ6ThhSZIkxvWJ4pvdNfxSZOPMgbFKRxIEonxWxjb8TIU6hd36HKXjRLwJsVbOiKvmm8ok5vYqZVR0mLRoMsRgnfIUcYuuJe67e6m8+KOI7MolCADfVSWwy25hXu8SUvUnNj3uico1valXRdHX0TMr4MdrrW85SFjMFux2O9lJWoYkJlFe7+ZApZMDVU5e++kAr/10gNQoHcNSTQxINDarxOs1au4+NwdJknr8nXBxub8baWmaAF35ZgwFy3D2m44vcUjETS9Q41az32Eiw9BAks6jdJwWlZmykJBJaYjMpkuB0jtGT3qMjv1VTirt4fm3FHqWSY6laPHyo/k8cfc7RH6fmY9G8vOXA/3xhtH5lzvtVGyjf4u2cifRa55VOo4gBIXHL/FSYR9MKh83phcrHSd8SBIHdEOI95RB9UGl04SNpr7lzR6+X/+31yeTYNJySp8oLhuVyAXZ8QxKNFJhc/N9Xi3vri9jXUEdNqcXt9ePyxvcVqwnM92aUvUlcQe8m0hOSkCtOe6KvN8Pi54FlQbD+U+SmpiqTLggWl9jQkZiTHR43v2GxjvgAKkNeRRZRiicJryd0ieK4m1VrCus59whcd3qYpAQWRI8hxju3Ei+dgAHdFlKx+kx+pkauC6thH8XZ/D+od78Ju2Q0pGOso25DV3pOszb/4ur93hc/c5WOpIgBNTHZankN5i4LaOQeG3PHfm8Jft1QxjpXA97vgFOUzpOtyNJEilROlKidIzrE0VeZQM7y+z8UmxjW6md7FQTuWlRQdt+YlISWk3gq7U+f3CuFIsKeDcgSRJqjQ7bt08je38duEZbvgVDyS+4U0fjWv9Bx9enj8Jy1r1ISITRDYgTFFY52F2vp7feSS99eAzY05LyYyrgQtviTVoGJRrJq2ygxOomPVavdCQhQPR+BwmeYtSylzp1LHWq2LAeUfp065eokPnRfG5Y54xEN6cX87/KRF4p7MO0hKqwGZANlYbaqX8n6ZOLiF3+KBWJ2fijute8wILQGqtHw6tFGaToXFybVqJ0nLBzUDcIj6RFu/srSBIV8K4waFWM6GVmWIqJfVUNbDlkZ3OJnZ1lDhLj9nH+QBN6TeB+dyVJQqvR8I9vtgb0Lrteo+Huc0cEpcm8qIB3I7LXBUcq4JKrDn3hT/h1FlypY44+36H1HH8nPUy9unzfkbvfVqWjtKlBG4tVmywGYuug0ekWDlQ1sK6wnt4x3eO7KLROV7Acvn6HWw+tQnXMJb1aVTzbDKPZaJyAUxVmI+zuXUI/5y526EdRrk1XOk2PY1D7+X8D9nPLjuH89UB/Xh66K2yugfjNKdSe+TTx/7uVuO9/T9XMd0Hd8sjBgtCd/KsoA6tXy0OD9mJU+9t/Qw/jlXQUGrMZULgaY2wtLoJ3t7anUKkkspJMDEw0crDKycYSG88u2cM7K7XcfGpvzh0af8JAb13R0nRsXRO8JvOi01t35PdhPLAEye/B2XdKRA4WU9qg4ZNfiull8JAWxne/m5QZB5LoLEDtFwOatMeiVzMs1UxNg5d9lQ1KxxG6QGUrI+7rm6B4PfsNI/jRfA7fm89nk2E8Knyc7viOm6v/Rk7DusaJZ8OB1wXfPIBb0jfe/RYUcVqslQuSDvNTTTyfH05WOk4zrr5nYsu5Dl35JqI2vKR0HEHosgMOIx+VpZJjqee8JDECdWsOmEaB7Gdg7Uqlo0QUlSQxINHIFbnJ/HFmNm6vn79+V8A1H+xiTUH4djENprCsgK9evZo5c+YwevRoJk6cyBNPPIHT6QRgy5YtzJkzh9zcXM466ywWLFigcNoQk2UMBd+jdhzGlToGX3QfpRMFxVv5CXh8MuPi7GFzZ6QtZcZBqPGR7BSDd3TEyN5m9BqJX4pseH1hUjHrBsKtbPSbU6g5/024aytfJd7AWtOZbDCdztKoS/hX/AMsirocr6TlXNtnXFA/H62s/AUq8+Y3oCafNdEzsKljlI7Toz3U/wDJOhfPHOxHiVPZ7ijHD7xjG38v7uQcLJtfx1CwrN1BerrzYKeRINzKxnDil+HP+wfgkyUe6H+AAN5wjDgFphGg0pBV+5PSUSKSWiVx7cR+fHrdCK4Zm0JxrYt7Pt/HA4v2U2IN/5ttgRR2FfDq6mpuueUWrrzySjZs2MDChQtZt24dr7/+OlarlZtvvpmLL76Y9evX89e//pWnnnqKrVu3Kh07NGQZfdFPaKvz8MT2w917nNKJgqLMpeOzkhhy0mPoa+oeo2WXGQcCoh94R+k0KnLTLDg8fraW2pSO0y2EZdkoSbj7nA7RvU54SZbU7DTk8mbcPeTphjLMtZl5Na8Q46sObqY2qOuLMW/8FyQOZpPlDMVyCI1iND6eGJSH3afh0bxBKHItTqUGv5eUlBRSU1N/faT1QTf3fTAlEPfDQ6Rq6pu/fuSRkpICcOL7U1NJTkpQYId6nrAsG8PI54eT+aUuhstSyxgZJX5v2+JSmyDzdPrW/YLOZ1c6TsSy6NX8dmIaH/9mGGdnxbHigJW5/93J66sP4fT0jO4RYdcHPD4+nlWrVmGxWJBlmdraWlwuF/Hx8SxdupTY2FiuuuoqACZMmMDMmTN5//33ycmJ8DlcZRl94U/oKrbjjUrD2W86ROi0OS8X9sHtV3HvtCw2rdindJwOKTU2jqIsKuAdNyTZxI4yB5uKbVTb3cSbI68rRSB117LRpTLyWfQ8Tm1YzmT7Uq6q/RcfxdxItSbEzY5lmZjljyH5XHDe/+Fflg90jwt8key0WCtX9jrEh6W9+XdxOrdmhHhqJJUaVBrs3z6D3+s84WV1nykYd3+K/43pOIZdCZrmd+olJCxmMza7HfmYMRAkjR7LtIfEfLch0F3LxlCodGv5e34mSVo3d/UtUDpO9zB0JpoDPzCwbh0746YonSaipUTpeOLcflw8PJHnlhfx9royvtlVze9OT2PKwNiIbkkUljU4i8UCwBlnnMHMmTNJSkpi1qxZ5OXlkZXVfLqYgQMHsnv3biViho7PAwtvRVf2Cz5zKg0DzgNV2F07CYg9dhNfHk7m1Hg7Z2QlKR2nw+q1idg0cfR27FE6SrehVkmMzbDg9sm8tExcuOiIbls2SirWmKawKOpyTH4bV9W+RrIntKPwmnZ+hL5kFY6hc6D/mSHdttC2e/oWMNhs45+FfVhVE6tIhqODnB738JlTcKWfhtpZjWH/1+Bxnricz33Cc3InBkYVuq7blo1BJMvw9IH+1Hm1PNT/AFGa4M7BHDGGnI+MxFCraIYeKmMyovjP3KHcc0Y6NpePR78+yO8+28eBqsgdJygsK+BNli5dyk8//YRKpeLOO+/EbrdjNBqbLWMwGHA4HCe9jWBM2h6ISd+b/rfKYyfuf7fC1o/wxvanIesiJLUeqYv/NW6Eji/fdBGqjfd0dp0t/feP/ExkJH6fVXHMlS+pjUezv2YAl+3I45h1SSpKTENJadiPxu862m+98d/OrbPz7+n4Ok8+V3Ay9os3kmzR8t6aAgqq7Iofe92lH2ewy8aT/4za/nvvMuSyMHoeOtnFldY3SPUUt7F861k6m1FTX0zUmmfxWXpjn/hwh/OeXHlwwqcZwPUGPq8U0HU2z9vRct+klnl+8B4sah8P7M2i1Gmgpd+dY/93IP9rb73e5FF44rPQ1h5EV7ax+XuPy3j8epUuv072mBFlY8s6/fmE+Pt67Pfx64okllQlclZ8FdMTqju23qY3n9SDFtbR0nNhXt5GpVJiGc7A+rVofc5Wlz36J5Y6ut3OLNv648TtBma9Hcnb+X1ubb0nHi9atYrLc1P4+NphzByWwMbieq75YBcv/1xCw5Fm6e2XR4H9DH7d38CXi2F9G9VgMGAwGLj//vuZM2cO8+bNo76+vtkyTqcTs/nkp7hJSAjPPlopKSlQXw6fXwdlW2H0b9BEZ2CRvV1fua7x87KYzODr3PQqFrMl4OtssrzSws+1cVzSq4ZTUtWNq9XqQG6/P4hO137zZa1W++s6fV1vetq0PrPJjNbnpyIul8F1qxggF1JiHt34WmufVwvMOvWR9VnQ+gLTB6a1dXYmV0fW1xVnDdHy0YYinl2yh5fnjg7IOiNdsMvGkykXO3qsFulG8YXWyIXVb3K59Q0WJt5Kma5vy+sDkpNbbqre1Pe2XT4PfH0teB0w60OS0gd0Km9HtVS+dKRcOpn1BkLTerVaLbIvcN0/mv5uFpMZNB1vep1tgX/kFHHDpn7cvTeb+eP2E6Vp/PtYzJaA/Ma0HLiD682eCZv+i/7QGvTxGZAwoNnLJ/w2HpmdpMPf0xAIpyzBEuyyMTExsVPLK/V9rVXF8deDA0jSeXh2ZBlRunZ+842mxtUHoFw8ttwLdvkVrPL2QMo5pO/fxgjPZvbGTGvzPR05nwrK+Z3ZEpT1Qvt5T/YcUqduvO/bVlmUCrzUP4Mbimp57IvtvP9LOcv2WXnsAolzhqe2Wcm1mC24A/g5NOVt7TykK8KuAr5x40YeeeQRvvzyy6MHk9vtRqvVMnDgQFaubD41wL59+xg0aNBJb6+qqgqPJ3z6AUqSREpKCpW7VxO7+AY09SXYTrkLy3l/wva/Jzo133erDBIWwOawg6eD65Mav9g2uw1aOqc6mXUew+lT8eiOLIwqH7el7cfmiMICuD1u3O62R07W6XTtLgOgO/J37sg6O0Kna1yf3WHH5fGxXzOQSUBC1S/s1WRhNluw220dn33JoDmyPhuuQA1Ccdw6JYnO5wpyxji9irOHJvPV1lJmDdtPdkr4zBmt1WrD5iJdKMvGzpSLKpWK5OTkTh1X+1T9+CT6Wi61vsOsylf5OOYGDmmPq4QfGePi8OHD+P2/fteaysjy8vIO9a2NWvUU5sLV2EdcQ71pCKrDhzudtyOOL186Wi51dr2B0rRej8cT0PU2zZltc9jB2bkBn8abbPyuj5qXCvtw04Z0Xh22i7goc+PvjrdrvzGt6sRvl9TvHEy75sPOL3AMuRTZGN/6b6NGjwU6/D0Nps4eMx2h0Wg6XRkNllCWjZWVlXi97d8IaSoXQ/59lcBosnD35t7Ue9U8m70HvduKrb1DXNZ3+JyrLceXe8EuvwJe3h45r9tmnsDpSAwo+4aNhgktLtup86kAnjsdu128QThvhFbzdvUcUqdp/F3vSFmUqoVXZw3g822V/GtVCb99fyMTMqO598wMMmINzZZtKuNsdltA5wHXa1s+D2lNZ8rFsGuCPnjwYJxOJ3//+99xu92UlJTwzDPPcOmllzJjxgwqKyt555138Hg8rFmzhkWLFjF79uyT3p4sy2H34NBm4j+/ArWtjNoz/oJtzG0gScgB/K9x5+n48k3HSRvv6ew6j/3vteI0ip0Gbu9TSKre1Wwwm8aNt/agg8t1dtmOPJqvq9SYhR8V6fYdRwumxn87t87Ov6fj6zz5XMHN+OA5Q1BJ8NJPxfj9fsWPwWbHY5gIZdl48p9Rx//mhboBLIi5Dkn2c5n1TdI8+cct03WGvK8wb30Hd+oY6k+9v6U9DeCjNYFcb+DzygFdZ/O8J/NbcFN6EXNSylhjjeUPeQPwH1ltV39j2vqvo+v166No6H8O+L0Y9y0Cj/3XXW7h/dD5YymY5ZgoG0NbNgKg1iFrAvg4coGrte8rMvwtL5UNdTFc2esQE+NqOnccNK38pB60sI6Wngv/8tauSyDfMpKBdWvQ+WwtLtv586nOLNv648TtBma9HckbuHPIjh1DKglm5SQy/zfDmD06ndX5dVz13538e3UJTo+vhfIosJ/Br/sb+HIx7O6Am81m3njjDZ588kkmTpxIVFQUM2fO5Pbbb0en0/HWW2/x17/+lRdffJH4+Hj+3//7f5x66qlKxw4Ydc1+WDQPyeOgZsYruPqe2WZvl0iw32Hk7ZI0BpttXNX7kNJxTppHbaTMOIh0+3boxEEowKCUKC4/pQ8frivkpwNWzhgQq3SksBOJZWORrj8LYq5njvVt5ljfZEHM9ZRoMwFQq9X4/PLJN0Ev2Qg//QEsqeiu+oDUqNTmr4dpH9aeTpLgkQH7qfBo+aoiGfMODY/03R02dwt80em4+p6BoeAHjPu/piHrEqUj9XjhWjb6/DKWaQ8FZb2o1C2+trQygVcPJjPCUs99mfkB33ZPsjN2Cv1smxlct4ptcW03QxeCK96k5e+XjeTs/iae/aGQN9eW8b/dNfz+zHQmZMYoHe+khF0FHBpHqHzrrbdafG3EiBF89NFHIU4UGuq6YuIXXQtOK7UzXsbV50ylIwWd2y/x8N4sfLLE4wP2o+nm58QFlhwmVOwhyZVPQ9QIpeN0K/dOy+KLTcW88nMJp2VGo1WHyyl3+IjEsrFY14+PY69njvUtLqt9i09irqVI1x+1SoVaJfHC/7bh9Bzb5FP6tclvK3dCkhz7uHLvPWj8Xub3/3+U/FgKlAIQZdBx27RhROo0jpFAI8GzWXu5Z/cQ5pfEY3cP5InhZUrHOsqTmI3ktKIv34g+/3sYMUvpSD1euJWNkiShVkn8890PcDlPfqDg4+lNFm67+ooWK+D7HEYezRtIos7D80P2oFOJGwFdsStmMucWv0B2zQ+iAh5gnR3EsWn50RnRvDs3m/mby3ljTSn3frGfKQNjuefMPqS2s45wE5YV8J5I8jiIW/JbVI4KmP0GrqRJPeIu6nP5meyyW7g5vYgRUZ3rLxiOCswjmVCxgL62zexOFBXwzkiK0jPvlFReW3WIz7ZWcnluiOeJFhRTos1kQcwNjZVw61v8L+oSCixTAHB5fcf16ZJw+/xHnjuxjExyHuTyfb9H63cyv99fOGjIhmPe7/KKqXi6A4Paz4tDd/PAvmy+qkjGvk3PK1MCMAhpgLjTTkXlqkVbkwf5KyBJDCApnMjlduMO5DhD7pbXVe7ScdvObNx+Fe+MzCdV526zobbQvgZNDAeixjDAtgGDtw6nJlrpSN2eWiXh88snPSBk0/t+n9aLKycO5omvdvLN9jLWFtZz11R3Y+uQbkJUwMOBLBO94o9oq/OoH3cPUSMuhbLwudofLMuq4nm/tDejo638tk+h0nECotCSg4xEX9sWdjNP6TjdzpW5KSzcWsFb60o5d2g80QZRRPUUJdq+fBhzM7Pq3uWC+gVslqrAd1mn1pFZv5FLC/6Ezt/Agsw/cSDqlCClFUJBp5J5dVQBd2/uxeKKJOb8azUv9NGSonYqHQ0kCWe/s1Ht+Rx14So0KhOehMFKpxJ6oDqvmlt3ZlPqMvDXQXmMj2/A1v3vZ4SFHbFnMbB+PdnW5WxMmKl0nG5PrWpsGfKPb7bh6sBghr9queVbZoyK87PjWXmwjqe+2U2cScOEvtH0ig7czB7BItrgBVFH54wz7foIU96XOPtOwTH6lhbfG2l22cw8kjeIGI2HZ7L2dvum501cagtlxoH0tW0mkFMc9RQGrYrfTuxNndPHO+si/yKU0Fy5No3/xN1BkSaTUXXL4I2ppNp3t/s+jd/FlNI3uOrAA0iyn48y/0pedMsj1wrdi1YFTw/K4/b+Zew4VMcVG4eyrjZM+vyptDgHng/6aPT5y1BbI+NCstB9OHwqfrdrKPscZu7pm89FyRVKR4oou2NOx60ykFO9ROkoEaWpZVunHr6Wn0+N0nHV2BTuPnsQdQ1evt5VzYoDVlwBHA09GMTtpSBJTkpArenAFZiq/bD6GYjLxHDF2xiMcUBkz9dZ7NTz253ZePwqXhq2g1R9AKfACQMHLaM5rWI+yfa92EhXOk63M31wPB9vqmDBlgpm5SSRHqtXOpIQQg5VFB/F3shZnhWMKfuOa0pvYVfM6fyScCEFlpH4pV/nvjV7qhlWu4xTKz4hxnOYUuMgFvZ5lCpDHwX3QAg0SYJb+x1m6Knn8sD8Ddy4Yxg3phdzW59CxS/eylozjLgMNv0X44FvcGRdgt8sus8IwVfvVXPbzmw210dzTe8SrksrgYgftje03GoTu2MmkVPzHfGuIqr1GUpHElqgUUncfXYWh6vr+HFfDXsrGiiudTGxXzR94gztr0ABogIeBJIkodbosH37NHJb83bLMsZdC9B4nThSx+H78UUkJCxmMza7naZpISR9FJaz7kVC6vZ9ekpdOm7ZMYxqj5a/D97DKTF1SkcKuP1Rp3BaxXz61qzmQNwcpeN0OypJ4neT07jtkzz+ubKEJ8/vr3QkIcT8koY18RcxZu4f2ffBvQy1rmCodQVulYFqXTp+rQmDq5J4d+OsCXZ1DEt6386GxIvwS+JnLVJdkNObfnm7uH9nJv8uzmCdNYZnsvaSZgjgPMsnw5xIw8ALMO79HOO+r3AMnoVsidyL6ILyrB41t+wYxnZbFNf2LuHezHwxsUOQbI2bQU7Nd+RUf8uPva5XOo7QhhijhnOGxJFX0cDawnq+3VvLgAQDp/aNxqANr0bf4ZUmwsheF7Tx0JZvRlNfjDtxGD5T0q+v+dzNlpN9Cp9cBEie3cTVW3ModBr5f/0PMC2xSulIQVFkHo5bZSCzdrXSUbqt3LQoJg+I4Yd9tWwpEZ3ZeqyUbD4b9DSvDPkPP6ReR7FpGAZfPTHOYrwqPdtip7KwzyO8kD2fdUmzReW7B+hrcvFezlau6V3ClvpoZm8excLyZMXHLPVbetHQfwaS14kpbxGS265sICFi5VfauWrDALbborglvUhUvoMs3zIKqzaJETVLRdfCbkCSJLKSTczKSSQjVs/+Kiefbq2koCYMxg45hjhbUYjkcaAvXolfa8aVHvl9FX+uieWBPYNp8Kt4JmsP5yVVKh0paHwqHfmW0QysW4veZ8OlNisdqVu6Y2IaKw9aeXFFMf++fDAqcYbRY1XrM/g5ZR4/pwBIWCwWbLbWpyETwoBaB5qudh+Rfl2P+kiXLo0OLTL3DyrltAQ7j+3J5LF9g/i+OonHswpI0ndyxGl14Abr8cX2w9X3zMY5wvcsBOf/C9i6BQGg2KHh4n+upM6h46F+B7iqd6nSkSKeLKnZFjeNSYc/oK99CwWWXKUjCR1g1qmZlhXLgSonq/Lr+G5vLUOSjYzvE41Grfz5pKiAK0RXugHJ58bZdwqoI7ePq8cv8XJhH94qSSdK7eWV7J2cFmtVOlbQ7Y0+lay6VQyqW8P2uKlKx+mWMuIMzM5J4uPNFXy3t4bpg+OVjiQIQjvUahU+v4zlrHsDtk7LkX+9fj+WaQ8dff4cYILDwx8X7WDhJpi1NYknLhrOzJG9O7V+n19ucV7lk+FJzEby2NEfWgcfzYWpL4EmPPsgCt2HLMPm+ijWWqMw62VeHlnA6RZR+Q6VrXHTmXT4A0ZWLxEV8G5EkiQGJBpJjdKx/ICV3YcbKKtzc+bAWBLM2vZXEESiAq4AyVmLtmIHPnMq3tgBSscJmo11UTx5oD977BaGW+p5dvAe0pXuqxcie6MnIvM8Q6wrRAW8C64f34tvdlXz6spDTB4Qi0Ejes0IQjhTq9SoVRL/fO8jXI6udh+R0Ol0uN1uLDEx3HT5pS2utw9wfoqBZRXR/O7DTbz45SqmJFoxqttvIaE3Wbjt6isCVgEHcKeORfJ50OWvIG7pHVTP+GdA77QLPYvdp+LH6gQKnUbidT4+uu00em/dhBxeLWojWpWhD4Wm4WTX/sjS3reJOcG7GbNezTlD4thWaueXYhuLdlQxITOawckmxTKJs1kF6EtWI+HHmX4akdhxp8Kt5eG9g/jNthwOOEzclF7EuyO29ZjKN4BdG8+h6JEMqF+Hxt9z9jvQYgwarhuXSlm9m483HVY6jiAIHeRye3B7Avhwe9tcbx9dPZelltLP6CDPbuS/RUnsrdO0u16Xu5NN1jtCknD1PRNG/wZ90c/EfXcP+IKwHSGi+WXYXm/ho9LeFDqNDDbZuKKPlayUKKWj9Ui/JF6IVnYzskZMSdYdqSSJkb0tzMxOwKBV8fPBOlYcsOL1K9OVTVTAQ0xlK0NbewBPbH/8ll5Kxwkoj8/Pf4qSmblxNF9VJDMprpqFuZu4s28hWlXP66uZFz8Fnd/JoLo1Skfp1mbnJJEWo+c/G8qodoiTWEEQWmZS+5mRUMnU+Ep8ssQ3lUn8UB2Px6/AhW5Jgguep2HQhRjyvyf2hwfB7wt9DqFbqnBr+aw8hRW18ehUfs5JqOCshGrCbCDnHmVXzGQc6mjGVC4Sg7F1Y0kWLRcPT6R3tI69FQ0s3llFvSv0ZbM4lENMX7YBGXClnap0lIBaW23mvBdW8OyBDGK1Pl4clsc/Rxygb5TcOIBOZx8R0Fxvb9J0/KgYUfOt0lG6DUmSTnjotWpun5SGw+3nzbVlLS5z/EMQhJ5JkiDL7ODy1FIyDA3stlv4tDyFWo8CPe5UaqxTnqKh33SM+78mZvmj4sRdaJPLL/FzTRyflqdS6dExKqqOK1JL6WdqUDpaj+dT6dgcfy4J7mL62TYpHUfoAoNWxYwhcYzsbabS7uXL7VVU2NwhzSD6gIeQylGJxlqAJ24AsiFO6TgBUe7S8ezBfiypSkSvcXD32YO49YwBGLQB6k8ndd9rRHZdIgeixjCwbi0mby0OTazSkcKSWiXh88uoVRIpKS3PnXtlSgoLd9TwxfZKbjt7KAOT226C5/F6qayoCEZcQRC6AYvGx/mJFUcGrorl0/JUpiZUkWkMcUVGpaF26t+Qlv4O097PQVJjnfzngPY5F7o/WYb9DSZW1sTi8GtI1bmYHFdNgq6VVl+tzjJwzMwBnZklIgJueoTCxoQLOK1iPmOqvuRg1Fil4whdoJIkxmZEkWDWsnxfLYt3VnPGwFj6xYdm0ExRAQ8hXXnjFTN3ymiFk3SdV4YPS3vxckFfHH41ZybV88R1F7Loq8959e2furx+S0wsN11+abfvI78tbjoD69eTU72UNcmXKR0nLKlVEmqVxL9/OkC1tY7WThoyotWs98vc8PZazstOaHV9eo2au8/NQZIkZKUnBxYEQTGSBLnR9STp3Hxblcg3lUmMjbYyNtoa2p8WtY6aaS8St/QOTHs+RfI5qT3zaVArOwqvEB6sXg0rauIochrRq3ycGVfFELO9xe9oR2cZsLT5ahu68U2PUKjRp7Ev6hQGW1cS7S7Hf/KftBAm+sUbsGTH8+3eWpbl1XJKhoURvcxBb00pKuAhIrnq0FTn4Y3KwG9OVjpOl2yrt/Dn/QPYbbeQpnfybP89TM5QERVvwuV24/Z0vZ9u04A73d2umMlMV7/MmKovWJN0qfhxa4Pb68ft9dNaBTzOqGFAgoH9VU4OVjWQFhO50/cJghA46QYXl6aUsaQykQ11MdR71ZwRX01Ip4LV6KmZ8Qpx392Lcd9iJK+bmrP/Lu489mA+GTbVRbOxLgYfEoNNNibE1mJUt95Nof1ZBn6dOaAzd8Aj5aZHKKxLnMXA+vWMr/iE1fEPKh1HCIAki46ZwxJYuqeG9UU27G4/p/YN7mCHojYQIrryTUjIuFO7791vu1fFX/f346qtOexzmLgxvYiFuZuYHF+jdLSw5VPp2JRwAfHuUgbVr1U6Trc3JiMKtQTrCuvxi7vbgiB0UJTGx0XJh+ljaGCPw8L/KpNCPzibWkfN2c/TMOA8DPnfErfkdiSPI7QZhLBQ7NQzv6wX6+tiidZ4uSipnLMSqtusfB8rWLMMCO3bHzWOckN/Rld/hd5jVTqOECBRejUzs+NJjdKys9zB8v1WfEEcIV1UwENA8jjQVu7CZ0rGF5WmdJyTsqXewvmrB/FhWS9yo+tYMGozd/Ut7PCPRU+2IeFCfJKGieUfNHb0Ek5alF7NsFQz1Q4v+yrEoDSCIHScViVzbmIFQ8w2Cp1GvjicjMMb6kq4ltqznsUxeDaGohXEL7oGlaMytBkExTh9Kr6vimdRRQp2n5rxMbXMSS2ldw+aprXbkyRWJV+Bzu9kVNkCpdMIAaTTqJgxJJ4+sXr2VzlZsrsapyc4I6SLCngIaA9vRZJ9jXe/u1nzHo9f4qWCPszbOoJDTi0P9jvI28O3M1CMyNlh9boktsTNIMOxg0wxcmaXjextxqBR8UuxDY9PXAASBKHjVBKcGVfNmGgrFR49nxZHUVEf4sqPSo31jL9QP/q36Cq2k/D55ahrDoQ2gxBSsgz7HCY+KuvFXoeFDEMDl6eWMjq6LrRdIYSA2BE7hVptCqMOzUfjdyodRwggjUpialYsAxMNFNQ4ueOD4Jy3iwp4sPnc6Cq24dPH4o3tr3Sa5jS6NqcCK/dZuH5HDq8XZzDE4mDxxHzm9alGpY3MacOC6eeUq/Ch5qzSf4tpaLpIp1ExOt2Cw+NnW6ld6ThC0EnNHk3XMBv/lTr96GbXQIUgkCQYF2PltNgaqt0arnh9NRWuEA+JI0nYTrmL2jP+gtpWRuIXV6I7tC60GYSQcPhU/K8ykW+rEpGBqfGVnJ9YQbRGzAvfXcmSmjVJl2Hy1pJb9bXScYQAU0kSk/vHMCYjil4xwRkVXQzCFmTaiu1IPjfu9Inhc/dbpW4cRXPaQ60u8nNeJXd9tIkqu5sbJ/XjgXOGoNN04HpNjxxkrOnk/phnjqkkyLKEVdeL9YmXcGrlJ4yoXca2uGmtrEfoiMHJRnaWO9haamdwsgmzTkzpE3GOHERmkxltCy0dzOaTG33WJL4rwhEjo+rRaHX8VAHX2/vxRraNZH1o54JtGHIpPnMKcd/eRfzi66k79QEcw+eFz/mC0CUH7Dq+LY/H6Vcz0GRnUmyN6LoXITYlnMekig+ZdPg9tsTPwK02KR1JCCBJkhjXJ5oHZw6nvLw84OsXFfBg8nvRlW/BrzXjjR+sdJpfSUdG0Xz3A1zO5gPAyDJssJpZVR2FTpI5P8WK+VApr7y1us2RNXvkCJrtVBCgeSVh44DfMrL2W6aXvkp5ymQcuuZTaYlKZMepJIlxfaJYuqeGX4psTB4Qo3QkIdCOXMzzFKzH7Ww+2q9Oq8PtObmKki4qBhjQ1XRChMiNczF1wjge/3IH128fzlvDt4e8Eu7OOJ2qi+cTt/R3xKx6El35ZqxnPIGsNYc0hxA4To+PRxduY1FpDHqVj+kJFQwQXfciildlYE2fmzh7/1OcWvExP6Veq3QkoRsRFfAg0lbuROV14EyfCKrwq1wdP2WYX4YVNXHstEcRr3UzI6GSWK0XtwdAAkk6svyJFfAeOYJmGxUEOLGS4AaWmmdykfU9pm65h09jr292wUJniQIG9KhrGF2RHqOjd7SOvMoGslNNJJrFnLqRSJa94D+2fJFA9oHfR2em2fl1heLuk9Dcb07LxLNnKX/Zk8aNO4bx1vDtJOq6Pp1mZ3jjB1E56xNif3gY4/6v0VTvpfbs5/DGZ4U0hxAYf1maz9I91aQb3UyJrcAimptHpO0pFzKq+H0mVHzMLwkXYtfGKx1J6CZ6Ynvh0PD70B3agKzW40nMVjpNuzx+iSVViey0R5Gmd3JJcjmx2h5YqT4JRysIzR6+XysJxzy/WzecHfpRDHTvYqRj1YnvETpMkiTG941CAlYerBPTkgmCcNKuSK/moX4HONhg4qYdw6jxhP7+hKyzUDP9RerG34+m9iCJn87GvPlN8dvQDc0YksBTs0Ywq7dVVL4jmCxp+L7XTej8TiaX/0fpOEI3IirgwbLrS1SuWtzJI8J+gDKnT8WiimTyG0wMMtk5P+kwOpWozATLt5aLqFPFMNX2FSmeYqXjdGvxJi3De5motHvYXS7m0xUE4eRd1buU32ceZJ/DzM07hmH1KtByTZKwj7qBqos+wBeVRvTaZ0lYdA1qa2Hoswgn7fQBsVw5ro9o0dZtdXxAz7yYiRSaRzC6ajG9HHvaeI8g/EpUwINBluHn55FVGjxJOUqnaVOdV83CwymUu/WMiqpjanyVmBIjyFwqI19EX4WEzOy6d7H4rEpH6tZy0yyYdSo2FNtwuMWdBkEQTt61aYf4XZ8Cdtst3LpjGPVKVMIBT8pIKmYvxD58HrqyX0j65ELMm14DX2j7pwtCj3LM2D4Wi6XNR9MYP2ZLFD9mPYosqbi45FliTLoTlzWJ8RyE5kQf8CDQFa+C0i14UkYha41Kx2lVhUvN5+WpOPwqJsZWkxN1Yj9mITgOafvwddQcLqz/kNl1/+GD2FuUjtRtadUqJmRG893eWtYU1HPOUNEHSxCEk3dzRjFuv4rXijO4bWc2/8reiVmJZsRaI3UTH8WZOZWYFY8Tve55THsWYp30h8aZVQRBCKx2xvY5XtNYP6XAStPZTLb/jzFbH+dnyznNlxNj/AjHEXfAg8C8+XWQ1Lh7jVU6Sqt+zqvkk+JYXH4V0xMqReVbAbsMI1lhmkaq9xCXWN9DJYd20J9I0jfOQJ84PQernRTWOJWOIwhCN3d7n0KuSytmc300t+8aisOn3OmSO+1UKuYsou6Uu1Hby0hYfANxS+5AU7NfsUyCEMlaHtun7bF+1hpPp1zTi1Pty0hx5YsxfoQ2iQp4gKlrD6IvWQMj5iDro5WO06KvSqO59u11SBJckHRYTI2hoFWms9hkGE8/Tx5nV7wrCukumNA3Go1K4qf9VmwuMYCgIAgnT5Lgnr4FXN3rEL/UxXDnrqE4FayEo9ZhH30rFZctpqH/DAz535G4YCYxPz6CylaqXC5BEADwS2q+jpqDjMSsuv9i8osbW0LrRAU8wPymJOwjr4epjykd5QSyDG8Vp/Hwtt4kRemZk1ZLb4NL6Vg9myTxreUi9uiGM8j+C3zzQOMfSug0i17NKRkW6l0+/rZkj9JxBEHo5iQJHuh3kMtTS1lrjeXu3UNw+zvXhlSSpIA+/NHp1E57gapLFuDudQqmPZ+R/NEMolc/g8pZ0+r7OpJFEISuOazpzZKoWUT7rVxsfQ+VLG4GCC0TfcADTNZZqJ/wIOaYVKWjNOOT4f8O9uOD0t4MtDj5721n8dGC+bhF/VtxsqRiUfQVmG3/JX39G5zW28cPSfOUjtUtDU0xUW7ziDvggiAEhCTBI/0P4PGr+OxwCr/fM5jnBu9B295MISo1+L2kpKQEPJPs9yL1mg4502D/MqTv/oh569uYd82HsdfDab+DqBPPQdrL4vO6OVxRFfC8gtCTbDeMIdlbyikNPzPDtpBvLLOVjiSEIVEB7wFcfomH92bxbVUiY6OtvDCmnF4x4Ts4XE/kkzR8nXILN7vfZdKht6mTovkl8SKlY3U7kiQxY0g8D84cSVlZmdJxBEHoLtQ60OhbfEkFPDakCI+kZlF5Ig/mDeH/sg+gkQCkY957TKVcawSVBvu3z+D3Bm5cCkkfheWse5uvt89UNJY+6A6tQb36ZeQ1r+JJHo671ynI+mgkJCxmMza7HZmWLxxIGj2WaQ8hSRKyaIUlCF3yg/lc4n0V5Dh/QUbiZ8u1SkcSwoyogEc4q0fDnbuHsLEuhhkJlTyZtRedVowSHY48KgNc/SnVL57JuSUv4lRHsSPuLKVjCYIgRCy1WoXPL2M56952l31+hh///M0s3gqPW4fz98tGolU39uSztLC8zy8j+73gDVxTM1mja/zX62q2Xm9MX7zRfVBb89GXbkBXvgXt4W14EobgSR0DhrQjy7dcuRZVbkEIHFlSszD6amZZ/8tI5wb0lWrwXal0LCGMiAp4BCtsMHD7zmzynUau7nWI+/sdRCW6eYU3cyIfZ/2Nubtu46Kip2nQRHEg6hSlUwmCIEQktUqNWiXxz/c+wuVof9CkfjIMMMXx5ZZDbN17gPNSrJgNWtxuN8dWY/UmC7ddfUVjU/RQkSR8sf1wxGSiritCV7oBXeVOtJW7IDkbVWIOPqO4AC8IoeCTtHwWcw0X173HENta+O/FGGPuw0WU0tGEMCAGYYtQv1ijmbs1h0KngYf6HeDB/qLy3V3U6VP5YMD/4VYZmZP/OL3tu5SOJAiCENFcbg9uT/sPn9fD1PjDDDbZyG8w8MmhWGqd3hOWc7kVnFZSkvDF9KFh8CU4si7GF5UGh3dg2vkhxn2LxajpghAiPknDwuir2Rp1BuSv4De7bhLndAIgKuARaWF5MjftGIbHr+Klobu4qrf4se1uKgz9+LDfk0iyzJUHHybRWaB0JEEQBAFQSzAlvprR0VYOu/UsKImnzhvCO90dJUn4otJwZl0Mudfgje2P2pqPec9nGPcsRG0tELNuCEKQ+SUNKxIvh4tfxeSp5bp9v2NK6Zuo/W6lowkKEhXwCOLwqXg0byCP7RtEgtbDuzlbmRxfo3Qs4SSVmIexIPOP6H125h54gGj3YaUjCYIgCDSOjj4+xsrpsTXUetR8Wp5CsbPlQdzCQnRvnAPOw5F9JZ6EIahtZZj2fYVp13w01Xkg+5VOKAiRbdRc3s1+jXLjACYdfp8b826lj22L0qkEhYgKeITY7zAyd8tIvjycwulx1SwYtZnBZofSsYQu2h89ni/7PEiMp4KrDjyA0WtVOpIgCIJwxPAoGzNTa/HLEl9VJLOxLjqsbyr7jfE4M6diH3E17uSRqFxWjAeXYt7yDtSIllaCEEyVxv68NegVfky9jnhXCb/Zfw8XF/wVi6dS6WhCiIkKeDfnleHt4jQu3zKS/AYjd/fN5+Whu4jVinmQI8X2uLP5X+87SHQVcuXBh9H6GpSOJAiCIBzR3+xmdko5sRoPa62xLKpIpt4T3oOuyLooXBmTsI+4BlevU5DVGvCI3xZBCDa/pGFFyjz+Nfgt8qLGM6L2e27b/RtOO/whGn/gZkwQwpuogHcnmiNzjR55bHXEM2/bKJ4ryCRF7+GtUXu4IbMSlVbfbLkTHmqd0nsidNL6pFmsSL6KNMdu5uQ/hsqv4AA/giAIQjOxWi+zU8rJNtdT4jLwXkEMH68vwh/Gd8MBZI0Rd+9xOEZcA8lDlI4jCBFOOvqo0afzUf+n+ajfk9g1cUwt/Te37f4NOdVLj4zNILX4kI5c22v8N7wv9AmtE9OQdQcqdeM8pdMeAqCo2sFz3+5l4aYS1CqJmyf3456zszDqOjkIjCSuv3QnP6Zej8lXx5iqRczJf5zP+v4Bj9qodCxBEAQB0Kpkzoivoa+xgeU1iTzw6Vbejx7Aw/32MsxiVzqeIAhKOVJrNpvMaH3Nx1sotUzjvdQzyCn9hFOL3+SioqeZUP0pKzLvojB2fKurNJstmDt73i+EDVEB7w6kxnlK//zvj1hdrma3zYiMRF+jk9MT6jEWH+Jf76zs8OosMbHcdPmlRwsEIdw0Xek8/mmJb9LuQuN3MbJmKdfuu5P5/Z6kTpfczroEQRCEUMk0OukbY8WZksu7qw5yxZZRnJ1Qya0ZRWJsFkHoiY7c8PIUrMfttLW4yFrS2Bx3H6falzHW/jOzd9xBgXYAq81TKdANanbOrtPqcHvc6CxRwABxOt8NiQp4mLN51fxYGs3nr61m7cEoAHrrnYyJtpJuaOwr0tnpRt1u0T88LLVxhfRYy4b+BVvxACYWvspNebfwQ//72Zs4rcULKuLqqCAIQujp1TIPXTiMmd5veWlfPN9VJfJdVSKnxdZwWWoZZ8RXoxEnzYLQo8iyF/ytn4O70LHcfA4bDadyuv1bhrk20bf2dQ5pMlhtmsI+3RCQ1CD7wH/kIXRL3bICXlVVxR/+8AfWrVuHWq3mwgsv5MEHH0Sj6Za7c4JSp5bvy5P4riqBlbWxeGQVOnUtgy1Osk21pOrF3IERqQNXSJv8zADKY37DOXWfcP7eRxlU8AErLOdSqUlttpy4OtqzRHrZKAjdzeAoJy8N3c1Om5k3itNZVpXAqto4ErVupiZUMS2hitHRdWhVYd5ZvBsT5aLQ3dSrY/k6eg4rfVMZ71jOCOcGZte9S60qjq2GcexRjacas9IxhS7olqXP3XffTUpKCitWrKCyspLf/va3vPPOO9x4441KR+s0q0dDnsNEnsPE9vooNtZFU+wyAKBGZmyMlem9nVw8+2re/ehD3C5R+Y507V0hbZKnG0px/D1Ms33JUNdWslw7yNMNZZthLAd1g/BKOnF1tIeJpLJRECJJtsXOc0P2UO7S8Vl5Cl9XJDG/rBfzy3phVPnIja5jVFQ9g812Bpvt9Na7xIXTABHlotBdWdXxLI26hFWmqeQ6V5Pj3MBkxxImO5ZQqkmnwJMLBf1R+9WAaPHYnXS7CnhBQQHr1q3jp59+wmg0kpGRwW233cazzz4bNoVpvdOLo8JGeZ0Jm9uAzaem3qvB6tVQ5tJT5tJT7tZR6tJT5Wk+InmmoYEr0qrIMVUzKa6aOK0XzAlEWfQK7Y0QzhpUFr6Mnst6zyROdfxIlnsng9y78KClRNuHGnc/2CTTz2qnRorDrolD5wW1341P0ohxACJIdygbBaGnS9G7+W2fIm7NKGKfw8Sy6njWWWPYYI1hVW3c0eWi1F7SDU5S9C566V0k69xEa7xEG7Wk5lWgrTdhkiW0Kj86SW72r1aSRdF+hCgXhUhgU0ezwjyDlaazGeDew1DPDvo7t9OrdhG8vYi7JB0Vhj5U6jOp0qdj08Zj0yZQr0nApTbjUenxqAx4JD1+ce4XFrpdBTwvL4/Y2FhSUlKOPjdgwAAOHTpEXV0d0dHRnVpfoJsgldW7eXRxPl6/DJx64gISqAwy8dFeBml9pBndZBjdZJjcZBpdxOp8mAxGHM4YIKbxLfrGfUrr3RuPy9nljEZzY1/ytF698Dg7PiCMRqPF6225w/nJrjMQGdvKpWTGjuYKTL401jOBnT4r6a59pLv2keYpI5MKWPc6c45dtObX/+lFi3yk6btMs7ktOLZBZNNrkiTBO2ru8voJVINJCQn+o+IGrx9ZDsRaJVhxNtrsa7q8vu7URDGQZWNn9lulavz+BKp8atLW8dDZY6uj6+2K49fblYxtrTdQust6mz7HcM7b0t9aqzcBoE7oh+xueb1DgCGZcBtu3P4qCht05Nv1FDboKHAYqXRHUe3WUCFL4KHx0QB8sxtofXRkAI3UWPZJUvNJjGh6nsZ5aJtKe4NG5o8VNqK12g6Vm2p197jbFoxzRqkDlZemzyeU5eKvGTtf9gTq+Dp+25Fe3ipx/tlAH7ZqzmOTx0m6uprJGRoO71pHtLOYXt4KoAJ8ND5a4EdCRtX4ODqVmYSMhHx0jjMVvKPmTq8Mx53tSdXSSZ9bNZ3v3enxn7Dedt/bxna7st52tgpLR6Mdew9+f+tjMzXpTLkoyYE54w2ZL774gueff54ff/zx6HOFhYVMmzaN5cuXk5qa2vqbBUEQIpQoGwVBEJoT5aIgCOGo200EbTKZaGhoaPZc0/83m8WABIIg9EyibBQEQWhOlIuCIISjblcBHzRoELW1tVRWVh59bv/+/aSmphIVFaVgMkEQBOWIslEQBKE5US4KghCOul0FPDMzkzFjxvDkk09is9koKirin//8J5deeqnS0QRBEBQjykZBEITmRLkoCEI46nZ9wAEqKyv585//zNq1a1GpVFx88cXcd9993WZQEEEQhGAQZaMgCEJzolwUBCHcdMsKuCAIgiAIgiAIgiB0N92uCbogCIIgCIIgCIIgdEeiAi4IgiAIgiAIgiAIISAq4IIgCIIgCIIgCIIQAqICLgiCIAiCIAiCIAghICrggiAIgiAIgiAIghACogIuCIIgCIIgCIIgCCEQ8RXw2tpaHnjgAcaPH88pp5zCbbfdxuHDhwHYsmULc+bMITc3l7POOosFCxaENNuOHTu46qqrGDt2LJMmTeIvf/kLbrdbsWzV1dVMmzaNtWvXHn2uvRwLFy5k2rRpjBo1ilmzZrFp06aQ5FqyZAkXXXQRo0eP5qyzzuLll1/G7/crnqvJ4cOHOe200/jss8+aPa9Urt27d/Ob3/yG3NxcTjvtNJ566im8Xq/iuRYvXsy5557L6NGjmTFjBh9++GGz9wQz1+7du7nuuusYN24cEydO5IEHHqC6uhoIj+99oLW1v002bdrEiBEjTnhvqPa3rYzhcMy3l/H9999n+vTp5ObmMn36dN57771m7w2HjE2ULKPay/j4448zfPhwcnNzjz7mz58fVhnDoUxtK+Njjz3W7PPLzc1l6NCh3HDDDSHPGGlWr17NnDlzGD16NBMnTuSJJ57A6XQC7ZcB5557LiNHjmz2d9m/f3+Xt9ukteO6K9ttb9vBPF7b2m57x2BX97klJ3Oe3BVdOU/pirY+91DUT3w+H/PmzeOhhx46+lywt/v111+TnZ3d7Pty//33B2/bcoS7+uqr5dtvv122Wq1yfX29fMcdd8g333yzXFtbK48bN05+7733ZI/HI69atUrOzc2Vt2zZEpJcPp9Pnjhxovyf//xH9vl8cmlpqTxjxgz55ZdfViTbhg0b5LPPPlvOysqS16xZI8uy3G6ONWvWyLm5ufKGDRtkt9stv/322/L48eNlh8MR1Fzbtm2Tc3Jy5GXLlsk+n0/et2+fPGXKFPnNN99UNFcTn88nz5s3Tx4yZIj86aefHn1eqVxVVVXy+PHj5X/961+y2+2Wi4qK5OnTp8tvvPGGorn27Nkjjxw5Ut60aZMsy7L8yy+/yMOGDZPXr18f9FwNDQ3yxIkT5RdeeEF2uVxydXW1fNNNN8m33HJLWHzvA62t/ZVlWfb7/fKCBQvkUaNGyVlZWc3eG6r9bStjOBzz7WX8/vvv5VNOOUXetm2bLMuyvGXLFnnEiBHy6tWrwyZjEyXLqI5kvOSSS+TPPvusxfeGQ8ZwKFPby3i8FStWyOPGjZP37t0b0oyRpqqqSh4xYoT86aefyj6fTy4vL5cvuOAC+YUXXmi3DKivr5cHDx4sFxcXB3S7TVo7rruy3Y5sO1jHa1vbbe8Y7Oo+t+RkzpO7oivnKV3R1uceqvrJP/7xD3nIkCHygw8+KMtycD/nJk8//bT80EMPnfB8sLYd0XfAt2/fzpYtW3j66aeJjo7GYrHwxBNPcN9997F06VJiY2O56qqr0Gg0TJgwgZkzZ/L++++HJJvVaqWiogK/348sywCoVCqMRmPIsy1cuJD77ruPe+65p9nz7eVYsGAB559/PmPGjEGr1XLttdcSFxfH119/HdRcJSUlXHHFFUyZMgWVSsWAAQOYNm0a69evVzRXk1deeYXU1FR69erV7Hmlcn3++edkZmZyyy23oNVqSU9P56233uLcc89VNFd+fj5er/foMSBJEmq1Gp1OF/Rchw4dYsiQIdx+++3odDri4uK4/PLLWb9+veLf+2Boa38BHnnkERYsWMCdd955wntDtb9tZVT6mO9IxrPOOotly5YxfPhwvF4vNTU1SJJEdHR02GRsolQZ1ZGMbrebvXv3Mnz48BbfGw4ZlS5TO5LxWNXV1dx33308+uijDBo0KKQZI018fDyrVq1i1qxZSJJEbW0tLpeL+Pj4dsuA7du3ExsbS1paWkC326S147or221v28E8XtvabnvHYFf3+Xgne57cFV05T+mKtj73UNRPVq9ezdKlS5k+ffrR50Kx3W3btrX4PQ7WtiO6Ar5161YGDhzIxx9/zLRp05g0aRLPPPMMSUlJ5OXlkZWV1Wz5gQMHsnv37pBki4uL49prr+WZZ55hxIgRnHHGGWRmZnLttdeGPNukSZP49ttvOe+885o9316Offv2BTVna7lmzJjBww8/fPT/O51OfvzxR4YNG6ZoLoA1a9awePFiHn/88RNeUyrX1q1bycrK4rHHHmPixImcffbZfPnll6Smpiqaa9KkSYwaNYorr7ySYcOGccUVV3DXXXeRk5MT9Fz9+/fnjTfeQK1WH31uyZIlDBs2TPHvfTC0tb8Ad911F/Pnzyc7O/uE94Zqf9vKqPQx35GMABaLhQMHDpCTk8PNN9/MlVdeefQzDZeMSpZRHcm4e/duvF4vL774IqeddhozZszg9ddfP9rdIBwyKl2mdiTjsf72t78xfPhwLrzwwqPPdcdyLFxYLBYAzjjjDGbOnElSUhKzZs06+lprZcC2bdswGo1cffXVjB8/nlmzZvHDDz8EZLttHddd3W5b2w728dradts7BgOxz8c62fPkrujKeUpXtfa5B3u7VVVVPProo/z973/HaDQefT7Y2/X7/ezYsYMff/yRKVOmMHnyZP7whz9gtVqDtu2IroBbrVb27NlDfn4+Cxcu5PPPP6e8vJwHH3wQu93e7I8LYDAYcDgcIcnm9/sxGAz84Q9/YPPmzXz11Vfs37+fF198MeTZkpKS0Gg0JzzfXo5g52wt17FsNhu33347BoOBa6+9VtFcVVVVPPLII/ztb3/DbDaf8LpSuaxWK5999hk5OTn8+OOPvPzyy8yfP5+3335b0Vxut5v09HTefvtttmzZwmuvvcZLL73Ezz//HJJcTWRZ5vnnn+eHH37g0UcfVfx7H2zH7y9w9KSlJUrsb0sZmyhxzHcmY0ZGBlu2bOGTTz5h8eLFvP7662GTUekyqiMZ6+vrGTduHPPmzWP58uU8++yz/Pe//+Wtt94Km4xKl6kdydikqKiIL7/8kt///vfNlu/u5Vg4WLp0KT/99BMqlapZ66HWygBJkhgxYgR/+ctfWLFiBddeey2/+93v2Lx5c5e2295xHajttrTtUB2vx2+3vWMwkPsMJ3+eHCidPU8JlOM/92Bu1+/3c//993PdddcxZMiQZq8Fe3+rq6vJzs5mxowZfP3113z00Ufk5+dz//33B23bEV0Bb2rK+uijj2KxWEhMTOTuu+9m+fLlyLJ8wuAVTqezxcIrGL799luWLFnC3Llz0el0DBo0iNtvv50PP/wQo9GoaLYm7eVQOueBAwe44oor8Hq9vPvuu0ev2CmRS5ZlHnjgAebNm9dqUyylPi+dTseIESO49NJL0Wq1DBkyhKuvvppvvvlG0VwvvfQSOp2O0047Da1Wy5lnnsn5559/dPCWUOSy2WzceeedLFq0iPfee4/BgweH/fe+K1ra3/aEen/byhgux3xbGbVaLVqtlhEjRnDNNdfw1VdfhUXGrKyssCujWvocJ06cyLvvvsu4cePQarXk5OTwm9/85miT1XDIGG5lalvfx08//fToAGzH6s7lWLgwGAykpKRw//33s2LFCqxWK9B6GXDjjTfy4osvkpmZiU6n48ILL+S0005jyZIlXdpue8d1oLbb0raHDx8ekuP1+O02fb6tHYOB3Oe2hOt5SqAc/7kHc7uvvfYaOp2OefPmnfBasPc3MTGR999/n0svvRSj0Ujv3r25//77+emnn4JWX4zoCvjAgQPx+/14PJ6jzzU1ixk6dCh5eXnNlt+3b9/R/lHBVlpaenTE8yYajQatVktWVpai2Zq0l2PQoEGK5Vy+fDlz5szh9NNP58033yQmJuboa0rkKi0tZd26dbzyyiuMHTuWsWPHcujQIf70pz9xyy23KJYLYMCAASd8144de0CpXIcOHWp2bMKvx0AochUWFjJ79mxsNhuffPLJ0ZPWcP7ed0Vr+9ueUO5vWxnD5ZhvLeM777zD3Xff3WxZt9t9NKfSGcOtjGrtc/zuu+/46KOPmi3rdrsxGAxhkzGcytT2juulS5dy0UUXnfC+7lqOKW3jxo2cc845zf7+brcbrVbL/Pnz2ywD3nzzTVavXn3C63q9/qS3C7By5co2j+uubLe9fV65cmXQjte2ttuvX782j8Gu7nNHBft8/WTPU7qirc994MCBQdvuF198wbp1645+j7/66iu++uorxo4dG/TPeffu3fztb387+v2Bxn1WqVTk5OQEZ9tdGsItzLndbnnatGny7373O9lms8lVVVXyNddcI99+++1ydXW1PHbsWPntt9+W3W63vHr1ajk3N/foaJXBlpeXJw8fPlx+9dVXZa/XKxcWFsoXXHCB/PTTTyua7djRHdvL0TQS4OrVq4+ObnnKKafINTU1Qc21adMmediwYfKCBQtaXFapXMebMmVKs5FIlcq1b98+efjw4fLrr78ue71eeffu3fLpp58u/+c//1E018cffyzn5OTIP/30k+z3++W1a9fKubm58rJly4Keq7a2Vj7zzDPlhx56SPb5fM1eC6fvfaC0tb/HWrNmzQmjoIdqf9vKGC7HfFsZt23bJg8bNkxevHix7PP55A0bNsjjxo2TFy9eHDYZj6dUGdVWxqVLl8o5OTnyqlWrZL/fL2/cuFEeP368/Pnnn4dNxnApU9v7W1dXV8tZWVlyfn7+Ca91x3IsHNhsNvmMM86Qn3zySdnlcsnFxcXypZdeKj/++OPtlgFPPPGEPGPGDLmwsFD2eDzyggUL5JycnBb/Pp3Z7vGOP667st32th3M47Wt7bZ3DHZ1n9vSmfPkrujKeUpXtPW5h7J+8uCDDx4dBT3Y2y0tLZVHjRolv/7667LH45FLSkrkyy67TH7kkUeCtu2IroDLsiyXlZXJd999tzxx4kR57Nix8gMPPCBbrVZZlmV569at8uWXXy7n5ubKU6dObVZghcLKlSvlOXPmyGPGjJHPPPNM+bnnnpNdLpei2Y6vULaX4/PPP5dnzJghjxo1Sr700kvlzZs3Bz3XLbfcIg8ePFgeNWpUs8cNN9ygaK7jHf8jqGSuzZs3y3PnzpXHjh0rT5o0SX7llVdkv9+veK53331Xnj59upybmyuff/758hdffNFs+WDleuutt+SsrCx55MiRJ3yPZDl8vveB0t7+NmmpAi7LodnftjKGyzHf3uf4/fffyzNnzpRzc3PlCy64IGTf585kPJZSZVR7GT/88EN5+vTp8siRI+WpU6fK7733XthlDIcytSPlWFZWltzQ0NDi+7tbORYu8vLy5Ouuu04eO3asPGXKlGbnbm2VAS6XS/7rX/8qT5o0SR45cqQ8e/bsVs8fOrvdYx1/XHd1u+1tO5jHa1vbbesYDMQ+t6az58knq6vnKV3R1uceqvrJsRXwUGx37dq1R9d/6qmnyk888YTsdDqDtm1Jlo+53y4IgiAIgiAIgiAIQlBEdB9wQRAEQRAEQRAEQQgXogIuCIIgCIIgCIIgCCEgKuCCIAiCIAiCIAiCEAKiAi4IgiAIgiAIgiAIISAq4IIgCIIgCIIgCIIQAqICLgiCIAiCIAiCIAghICrggiAIgiAIgiAIghACogIuRJyzzjqLESNGkJubS25uLqNGjeKiiy5iwYIFSkcTBEHokHArxxwOBzfccAMjR47kqquuavbav//9b0aNGsX+/ftPeN+dd97JJZdcgtvtDlVUQRAimCgbhUigUTqAIATDn/70J2bNmgWA2+3mxx9/5OGHH6ampoabb75Z4XSCIAjtC6dybNeuXfz888+sXbuW2NjYZq/deOONrF27lt///vd8/PHH6HQ6AD7++GNWr17NZ599dvQ5QRCErhJlo9DdiTvgQsTT6XRMnz6dBx98kJdffhmbzcbGjRu55pprmDRpEiNGjGDWrFls3rwZgBtuuIE//OEPzdZxyy238MILL+D1evnjH//IxIkTGT9+PHPnzuWXX35RYK8EQehJWirHgJMuy1ry3XffMWvWLEaPHs2MGTN455138Pv9fPfdd1x33XUATJky5YQ7TZIk8X//939UVlby3HPPAXDgwAGeeuopnnrqKTIyMqisrOS+++5j4sSJTJo0iccee+zoPgB88sknzJo1i/Hjx5Obm8stt9xCdXU1AC+99BLXX389s2fPZty4caxfv77rH6ggCBFBlI2ibOyWZEGIMFOmTJE//fTTE54vLy+Xs7Ky5B9//FEeN26c/N5778k+n0+22+3yXXfdJV955ZWyLMvy4sWL5bFjx8oul0uWZVmuqKiQhw0bJhcWFsqffPKJfOGFF8pWq1X2er3yc889J8+cOTOk+ycIQuRrrxxbvny53NDQcNJl2fFWr14tDxs2TF68eLHs8Xjk7du3y5MnT5bffvttWZZlec2aNXJWVlabmVetWiVnZ2fL69atky+99FL5mWeekWVZln0+nzxnzhz5/vvvl+vr6+Xq6mr5lltuke+55x5ZlmV5y5Yt8siRI+UtW7bIsizLpaWl8vTp0+Xnn39elmVZfvHFF+UhQ4bIq1atkm02m+zxeDr/gQqCEBFE2SjKxkgg7oALPUZcXBwAVquV+fPnM3fuXNxuNyUlJcTGxlJeXg7A2WefjUqlYtmyZQAsWrSI3NxcMjIyMBgMFBcX88knn3Dw4EHuuusuvvzyS8X2SRCEnqWpHKutrUWr1Z50WXa8zz77jKlTp3Leeeeh0WgYNmwYN998Mx999FGHs02YMIGbb76ZG2+8EZ1Ox7333gvA9u3b2bFjB48//jgWi4W4uDgefPBBFi9eTE1NDVlZWXz11Vfk5ORgtVo5fPgw8fHxR/cDICMjgwkTJmA2m9FoRO85QRCaE2WjKBu7E/GXEnqMpiY7CQkJrF27lptuugmHw8HAgQPRaDTIsgw0Nme64IIL+OKLLzjnnHNYuHAh119/PQDnn38+Ho+HBQsW8Nxzz5GQkMCtt97KlVdeqdh+CYLQcxxbjqnV6pMuy45XVVXF0KFDmz2Xnp5OSUlJp/Ldcccd/POf/+SOO+44ejJYXFyMz+fjjDPOaLasTqejqKiIIUOG8O6777Jo0SJMJhODBw/GZrMd3Q+A5OTkTuUQBKFnEWWj0J2ICrjQYyxbtgyTyYRWq+WJJ57go48+Yvjw4QC89dZbHDx48Oiys2fP5rLLLmPTpk0UFxczY8YMAA4ePMiwYcO4+OKLcTqd/O9//+PBBx9k7NixDBo0SJH9EgSh52gqx0aOHMmWLVtOuiw7XlpaGoWFhc2eKyoqIikpqVP51Go1ACrVrw3sUlNTMRgMrF279ujrbreboqIi+vbty1tvvcXKlStZtGgRiYmJANx6663N1itJUqdyCILQs4iyUehORBN0IeK53W6+/vprnnvuOe655x7cbjcqlQqDwQDA5s2beffdd5tNBZGdnc3AgQP585//zHnnnYfRaATghx9+4I477qC4uBiDwUBsbCwajYaoqChF9k0QhJ7h+HLMYrFQX19/0mXZ8WbPns2yZcv45ptv8Pl87Ny5k3//+9/Mnj27y9lzcnLo27cvTz/9NHa7HafTyZNPPsm1116Lz+fDZrOh0WjQarV4vV6++OILVqxYgcfj6fK2BUGIbKJsFLojcQdciEiPP/44TzzxBAB6vZ7+/fvzpz/9ifPOOw9Zlpk7dy5XXXUVfr+f9PR05s2bx9///ncqKyuPXmWcNWsWf/3rX3nssceOrveaa66hvLycK664ApvNRlpaGs8//zypqamK7KcgCJGrrXIMYOLEiSddlh1v5MiRvPDCC7zyyis88sgjxMXFceWVV3LTTTd1eT80Gg2vvfYazzzzDNOnT8flcpGTk8Pbb7+NXq/n+uuvZ+/evUyZMgW9Xk92djZz585lzZo1Xd62IAiRR5SNomzs7iT52I4EgiAc9f333/O3v/2Nb775RukogiAIJ02UZYIgCCcSZaOgFHEHXBCOU1NTQ1lZGa+++qoYXE0QhG5LlGWCIAgnEmWjoDTRB1wQjrN9+3auuOIKkpKSuOKKK5SOIwiCcFJEWSYIgnAiUTYKShNN0AVBEARBEARBEAQhBMQdcEEQBEEQBEEQBEEIAVEBFwRBEARBEARBEIQQEBVwQRAEQRAEQRAEQQgBUQEXBEEQBEEQBEEQhBAQFXBBEARBEARBEARBCAFRARcEQRAEQRAEQRCEEBAVcEEQBEEQBEEQBEEIAVEBFwRBEARBEARBEIQQEBVwQRAEQRAEQRAEQQiB/w9eQSd6ysmpTgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1000x400 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib\n",
    "\n",
    "sns.set_style(\"darkgrid\", {\"axes.facecolor\": \".9\"})\n",
    "sns.set_context(\"paper\")\n",
    "\n",
    "SMALL_SIZE = 10\n",
    "\n",
    "# Set Arial font\n",
    "matplotlib.rcParams['font.family'] = 'Arial'\n",
    "matplotlib.rcParams['font.size'] = SMALL_SIZE\n",
    "\n",
    "plt.rc('font', size=SMALL_SIZE)          # controls default text sizes\n",
    "plt.rc('axes', titlesize=SMALL_SIZE)     # fontsize of the axes title\n",
    "plt.rc('axes', labelsize=SMALL_SIZE)     # fontsize of the x and y labels\n",
    "plt.rc('xtick', labelsize=SMALL_SIZE)    # fontsize of the tick labels\n",
    "plt.rc('ytick', labelsize=SMALL_SIZE)    # fontsize of the tick labels\n",
    "plt.rc('legend', fontsize=SMALL_SIZE)    # legend fontsize\n",
    "plt.rc('figure', titlesize=SMALL_SIZE)   # fontsize of the figure title\n",
    "\n",
    "# create figure\n",
    "fig, (ax1, ax2, ax3) = plt.subplots(nrows=1, ncols=3, figsize=(10, 4))\n",
    "\n",
    "yticks = [0, 30, 60, 90, 120, 150, 180]\n",
    "\n",
    "# SEASON LENGTH\n",
    "ax1 = sns.histplot(data=data_all_rice, x='Total_Lenght', kde=True, bins=11, hue='Class_name', ax=ax1)\n",
    "ax1.set_title('(a) Lenght of the Season', fontweight=\"bold\", loc='left', pad=10)\n",
    "ax1.set_xlabel(\"Days\")\n",
    "ax1.set_ylabel(\"Density\")\n",
    "x1ticks = [60, 80, 100, 120, 140, 160, 180, 200]\n",
    "ax1.set_xticks(x1ticks)\n",
    "ax1.set_yticks(yticks)\n",
    "ax1.legend_.set_title(None)\n",
    "ax1.legend_ = None\n",
    "ax1.set_ylim(0, 180)\n",
    "\n",
    "# START OF SEASON\n",
    "ax2 = sns.histplot(data=data_all_rice, x='doy_SOS', kde=True, bins=11, hue='Class_name', ax=ax2)\n",
    "ax2.set_title('(b) Start of the Season', fontweight=\"bold\", loc='left', pad=10)\n",
    "ax2.set_xlabel(\"Day of Year\")\n",
    "x2ticks = [210, 220, 230, 240, 250, 260, 270]\n",
    "ax2.set_xticks(x2ticks)\n",
    "ax2.legend_ = None\n",
    "ax2.set_ylabel(None)\n",
    "ax2.set_ylim(0, 180)\n",
    "ax2.set_yticks(yticks)\n",
    "\n",
    "# END OF SEASON\n",
    "ax3 = sns.histplot(data=data_all_rice, x='doy_EOS', kde=True, bins=11, hue='Class_name', ax=ax3)\n",
    "ax3.set_title('(c) End of the Season', fontweight=\"bold\", loc='left', pad=10)\n",
    "ax3.set_xlabel(\"Day of Year\")\n",
    "ax3.legend_.set_title(None)\n",
    "ax3.set_ylabel(None)\n",
    "# Custom x-axis ticks and labels for ax3\n",
    "x3ticks = [335, 345, 355, 365, 375, 385, 395, 405, 415]\n",
    "x3tick_labels = ['335', '345', '350', '365', '10', '20', '30', '40', '50']\n",
    "\n",
    "ax3.set_xticks(x3ticks)\n",
    "ax3.set_xticklabels(x3tick_labels)\n",
    "\n",
    "ax3.set_ylim(0, 180)\n",
    "ax3.set_yticks(yticks)\n",
    "\n",
    "fig.tight_layout(pad=1)\n",
    "\n",
    "plt.rc('legend', loc=\"upper right\")\n",
    "plt.savefig(r\"C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\data\\Fig_1.png\", format='png', dpi=1000)\n",
    "#Total_Lenght"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "ename": "AttributeError",
     "evalue": "'bool' object has no attribute 'get_visible'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "Cell \u001b[1;32mIn[42], line 47\u001b[0m\n\u001b[0;32m     44\u001b[0m ax3\u001b[38;5;241m.\u001b[39mset_ylabel(\u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m     45\u001b[0m ax3\u001b[38;5;241m.\u001b[39mset_ylim(\u001b[38;5;241m0\u001b[39m, \u001b[38;5;241m225\u001b[39m)\n\u001b[1;32m---> 47\u001b[0m \u001b[43mfig\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtight_layout\u001b[49m\u001b[43m(\u001b[49m\u001b[43mpad\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[0;32m     49\u001b[0m plt\u001b[38;5;241m.\u001b[39mrc(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlegend\u001b[39m\u001b[38;5;124m'\u001b[39m, loc\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mupper right\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m     51\u001b[0m plt\u001b[38;5;241m.\u001b[39mshow()  \u001b[38;5;66;03m# Add this line to display the plot\u001b[39;00m\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\figure.py:3509\u001b[0m, in \u001b[0;36mFigure.tight_layout\u001b[1;34m(self, pad, h_pad, w_pad, rect)\u001b[0m\n\u001b[0;32m   3507\u001b[0m previous_engine \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_layout_engine()\n\u001b[0;32m   3508\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mset_layout_engine(engine)\n\u001b[1;32m-> 3509\u001b[0m \u001b[43mengine\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexecute\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[0;32m   3510\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(previous_engine, TightLayoutEngine) \\\n\u001b[0;32m   3511\u001b[0m         \u001b[38;5;129;01mand\u001b[39;00m previous_engine \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m   3512\u001b[0m     _api\u001b[38;5;241m.\u001b[39mwarn_external(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mThe figure layout has changed to tight\u001b[39m\u001b[38;5;124m'\u001b[39m)\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\layout_engine.py:178\u001b[0m, in \u001b[0;36mTightLayoutEngine.execute\u001b[1;34m(self, fig)\u001b[0m\n\u001b[0;32m    176\u001b[0m renderer \u001b[38;5;241m=\u001b[39m fig\u001b[38;5;241m.\u001b[39m_get_renderer()\n\u001b[0;32m    177\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mgetattr\u001b[39m(renderer, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_draw_disabled\u001b[39m\u001b[38;5;124m\"\u001b[39m, nullcontext)():\n\u001b[1;32m--> 178\u001b[0m     kwargs \u001b[38;5;241m=\u001b[39m \u001b[43mget_tight_layout_figure\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m    179\u001b[0m \u001b[43m        \u001b[49m\u001b[43mfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfig\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43maxes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mget_subplotspec_list\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfig\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43maxes\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m    180\u001b[0m \u001b[43m        \u001b[49m\u001b[43mpad\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minfo\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mpad\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mh_pad\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minfo\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mh_pad\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mw_pad\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minfo\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mw_pad\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m    181\u001b[0m \u001b[43m        \u001b[49m\u001b[43mrect\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minfo\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mrect\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m    182\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m kwargs:\n\u001b[0;32m    183\u001b[0m     fig\u001b[38;5;241m.\u001b[39msubplots_adjust(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\_tight_layout.py:266\u001b[0m, in \u001b[0;36mget_tight_layout_figure\u001b[1;34m(fig, axes_list, subplotspec_list, renderer, pad, h_pad, w_pad, rect)\u001b[0m\n\u001b[0;32m    261\u001b[0m         \u001b[38;5;28;01mreturn\u001b[39;00m {}\n\u001b[0;32m    262\u001b[0m     span_pairs\u001b[38;5;241m.\u001b[39mappend((\n\u001b[0;32m    263\u001b[0m         \u001b[38;5;28mslice\u001b[39m(ss\u001b[38;5;241m.\u001b[39mrowspan\u001b[38;5;241m.\u001b[39mstart \u001b[38;5;241m*\u001b[39m div_row, ss\u001b[38;5;241m.\u001b[39mrowspan\u001b[38;5;241m.\u001b[39mstop \u001b[38;5;241m*\u001b[39m div_row),\n\u001b[0;32m    264\u001b[0m         \u001b[38;5;28mslice\u001b[39m(ss\u001b[38;5;241m.\u001b[39mcolspan\u001b[38;5;241m.\u001b[39mstart \u001b[38;5;241m*\u001b[39m div_col, ss\u001b[38;5;241m.\u001b[39mcolspan\u001b[38;5;241m.\u001b[39mstop \u001b[38;5;241m*\u001b[39m div_col)))\n\u001b[1;32m--> 266\u001b[0m kwargs \u001b[38;5;241m=\u001b[39m \u001b[43m_auto_adjust_subplotpars\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m    267\u001b[0m \u001b[43m                                  \u001b[49m\u001b[43mshape\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mmax_nrows\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmax_ncols\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m    268\u001b[0m \u001b[43m                                  \u001b[49m\u001b[43mspan_pairs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mspan_pairs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m    269\u001b[0m \u001b[43m                                  \u001b[49m\u001b[43msubplot_list\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msubplot_list\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m    270\u001b[0m \u001b[43m                                  \u001b[49m\u001b[43max_bbox_list\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43max_bbox_list\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m    271\u001b[0m \u001b[43m                                  \u001b[49m\u001b[43mpad\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpad\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mh_pad\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mh_pad\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mw_pad\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mw_pad\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m    273\u001b[0m \u001b[38;5;66;03m# kwargs can be none if tight_layout fails...\u001b[39;00m\n\u001b[0;32m    274\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m rect \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m kwargs \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m    275\u001b[0m     \u001b[38;5;66;03m# if rect is given, the whole subplots area (including\u001b[39;00m\n\u001b[0;32m    276\u001b[0m     \u001b[38;5;66;03m# labels) will fit into the rect instead of the\u001b[39;00m\n\u001b[1;32m   (...)\u001b[0m\n\u001b[0;32m    280\u001b[0m     \u001b[38;5;66;03m# auto_adjust_subplotpars twice, where the second run\u001b[39;00m\n\u001b[0;32m    281\u001b[0m     \u001b[38;5;66;03m# with adjusted rect parameters.\u001b[39;00m\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\_tight_layout.py:82\u001b[0m, in \u001b[0;36m_auto_adjust_subplotpars\u001b[1;34m(fig, renderer, shape, span_pairs, subplot_list, ax_bbox_list, pad, h_pad, w_pad, rect)\u001b[0m\n\u001b[0;32m     80\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m ax \u001b[38;5;129;01min\u001b[39;00m subplots:\n\u001b[0;32m     81\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m ax\u001b[38;5;241m.\u001b[39mget_visible():\n\u001b[1;32m---> 82\u001b[0m         bb \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m [\u001b[43mmartist\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_tightbbox_for_layout_only\u001b[49m\u001b[43m(\u001b[49m\u001b[43max\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m)\u001b[49m]\n\u001b[0;32m     84\u001b[0m tight_bbox_raw \u001b[38;5;241m=\u001b[39m Bbox\u001b[38;5;241m.\u001b[39munion(bb)\n\u001b[0;32m     85\u001b[0m tight_bbox \u001b[38;5;241m=\u001b[39m fig\u001b[38;5;241m.\u001b[39mtransFigure\u001b[38;5;241m.\u001b[39minverted()\u001b[38;5;241m.\u001b[39mtransform_bbox(tight_bbox_raw)\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\artist.py:1415\u001b[0m, in \u001b[0;36m_get_tightbbox_for_layout_only\u001b[1;34m(obj, *args, **kwargs)\u001b[0m\n\u001b[0;32m   1409\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m   1410\u001b[0m \u001b[38;5;124;03mMatplotlib's `.Axes.get_tightbbox` and `.Axis.get_tightbbox` support a\u001b[39;00m\n\u001b[0;32m   1411\u001b[0m \u001b[38;5;124;03m*for_layout_only* kwarg; this helper tries to use the kwarg but skips it\u001b[39;00m\n\u001b[0;32m   1412\u001b[0m \u001b[38;5;124;03mwhen encountering third-party subclasses that do not support it.\u001b[39;00m\n\u001b[0;32m   1413\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m   1414\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m-> 1415\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m obj\u001b[38;5;241m.\u001b[39mget_tightbbox(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfor_layout_only\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;28;01mTrue\u001b[39;00m})\n\u001b[0;32m   1416\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m:\n\u001b[0;32m   1417\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m obj\u001b[38;5;241m.\u001b[39mget_tightbbox(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\axes\\_base.py:4405\u001b[0m, in \u001b[0;36m_AxesBase.get_tightbbox\u001b[1;34m(self, renderer, call_axes_locator, bbox_extra_artists, for_layout_only)\u001b[0m\n\u001b[0;32m   4403\u001b[0m bbox_artists \u001b[38;5;241m=\u001b[39m bbox_extra_artists\n\u001b[0;32m   4404\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m bbox_artists \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m-> 4405\u001b[0m     bbox_artists \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_default_bbox_extra_artists\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m   4407\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m a \u001b[38;5;129;01min\u001b[39;00m bbox_artists:\n\u001b[0;32m   4408\u001b[0m     bbox \u001b[38;5;241m=\u001b[39m a\u001b[38;5;241m.\u001b[39mget_tightbbox(renderer)\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\axes\\_base.py:4326\u001b[0m, in \u001b[0;36m_AxesBase.get_default_bbox_extra_artists\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m   4321\u001b[0m \u001b[38;5;66;03m# always include types that do not internally implement clipping\u001b[39;00m\n\u001b[0;32m   4322\u001b[0m \u001b[38;5;66;03m# to Axes. may have clip_on set to True and clip_box equivalent\u001b[39;00m\n\u001b[0;32m   4323\u001b[0m \u001b[38;5;66;03m# to ax.bbox but then ignore these properties during draws.\u001b[39;00m\n\u001b[0;32m   4324\u001b[0m noclip \u001b[38;5;241m=\u001b[39m (_AxesBase, maxis\u001b[38;5;241m.\u001b[39mAxis,\n\u001b[0;32m   4325\u001b[0m           offsetbox\u001b[38;5;241m.\u001b[39mAnnotationBbox, offsetbox\u001b[38;5;241m.\u001b[39mOffsetBox)\n\u001b[1;32m-> 4326\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m [a \u001b[38;5;28;01mfor\u001b[39;00m a \u001b[38;5;129;01min\u001b[39;00m artists \u001b[38;5;28;01mif\u001b[39;00m a\u001b[38;5;241m.\u001b[39mget_visible() \u001b[38;5;129;01mand\u001b[39;00m a\u001b[38;5;241m.\u001b[39mget_in_layout()\n\u001b[0;32m   4327\u001b[0m         \u001b[38;5;129;01mand\u001b[39;00m (\u001b[38;5;28misinstance\u001b[39m(a, noclip) \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m a\u001b[38;5;241m.\u001b[39m_fully_clipped_to_axes())]\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\axes\\_base.py:4326\u001b[0m, in \u001b[0;36m<listcomp>\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m   4321\u001b[0m \u001b[38;5;66;03m# always include types that do not internally implement clipping\u001b[39;00m\n\u001b[0;32m   4322\u001b[0m \u001b[38;5;66;03m# to Axes. may have clip_on set to True and clip_box equivalent\u001b[39;00m\n\u001b[0;32m   4323\u001b[0m \u001b[38;5;66;03m# to ax.bbox but then ignore these properties during draws.\u001b[39;00m\n\u001b[0;32m   4324\u001b[0m noclip \u001b[38;5;241m=\u001b[39m (_AxesBase, maxis\u001b[38;5;241m.\u001b[39mAxis,\n\u001b[0;32m   4325\u001b[0m           offsetbox\u001b[38;5;241m.\u001b[39mAnnotationBbox, offsetbox\u001b[38;5;241m.\u001b[39mOffsetBox)\n\u001b[1;32m-> 4326\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m [a \u001b[38;5;28;01mfor\u001b[39;00m a \u001b[38;5;129;01min\u001b[39;00m artists \u001b[38;5;28;01mif\u001b[39;00m \u001b[43ma\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_visible\u001b[49m() \u001b[38;5;129;01mand\u001b[39;00m a\u001b[38;5;241m.\u001b[39mget_in_layout()\n\u001b[0;32m   4327\u001b[0m         \u001b[38;5;129;01mand\u001b[39;00m (\u001b[38;5;28misinstance\u001b[39m(a, noclip) \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m a\u001b[38;5;241m.\u001b[39m_fully_clipped_to_axes())]\n",
      "\u001b[1;31mAttributeError\u001b[0m: 'bool' object has no attribute 'get_visible'"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Error in callback <function _draw_all_if_interactive at 0x000002109CEC2680> (for post_execute):\n"
     ]
    },
    {
     "ename": "AttributeError",
     "evalue": "'bool' object has no attribute 'get_animated'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\pyplot.py:120\u001b[0m, in \u001b[0;36m_draw_all_if_interactive\u001b[1;34m()\u001b[0m\n\u001b[0;32m    118\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_draw_all_if_interactive\u001b[39m():\n\u001b[0;32m    119\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m matplotlib\u001b[38;5;241m.\u001b[39mis_interactive():\n\u001b[1;32m--> 120\u001b[0m         \u001b[43mdraw_all\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\_pylab_helpers.py:132\u001b[0m, in \u001b[0;36mGcf.draw_all\u001b[1;34m(cls, force)\u001b[0m\n\u001b[0;32m    130\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m manager \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m.\u001b[39mget_all_fig_managers():\n\u001b[0;32m    131\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m force \u001b[38;5;129;01mor\u001b[39;00m manager\u001b[38;5;241m.\u001b[39mcanvas\u001b[38;5;241m.\u001b[39mfigure\u001b[38;5;241m.\u001b[39mstale:\n\u001b[1;32m--> 132\u001b[0m         \u001b[43mmanager\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcanvas\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdraw_idle\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\backend_bases.py:2082\u001b[0m, in \u001b[0;36mFigureCanvasBase.draw_idle\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m   2080\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_is_idle_drawing:\n\u001b[0;32m   2081\u001b[0m     \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_idle_draw_cntx():\n\u001b[1;32m-> 2082\u001b[0m         \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdraw(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\backends\\backend_agg.py:400\u001b[0m, in \u001b[0;36mFigureCanvasAgg.draw\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m    396\u001b[0m \u001b[38;5;66;03m# Acquire a lock on the shared font cache.\u001b[39;00m\n\u001b[0;32m    397\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m RendererAgg\u001b[38;5;241m.\u001b[39mlock, \\\n\u001b[0;32m    398\u001b[0m      (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtoolbar\u001b[38;5;241m.\u001b[39m_wait_cursor_for_draw_cm() \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtoolbar\n\u001b[0;32m    399\u001b[0m       \u001b[38;5;28;01melse\u001b[39;00m nullcontext()):\n\u001b[1;32m--> 400\u001b[0m     \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfigure\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdraw\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrenderer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m    401\u001b[0m     \u001b[38;5;66;03m# A GUI class may be need to update a window using this draw, so\u001b[39;00m\n\u001b[0;32m    402\u001b[0m     \u001b[38;5;66;03m# don't forget to call the superclass.\u001b[39;00m\n\u001b[0;32m    403\u001b[0m     \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mdraw()\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\artist.py:95\u001b[0m, in \u001b[0;36m_finalize_rasterization.<locals>.draw_wrapper\u001b[1;34m(artist, renderer, *args, **kwargs)\u001b[0m\n\u001b[0;32m     93\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(draw)\n\u001b[0;32m     94\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mdraw_wrapper\u001b[39m(artist, renderer, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m---> 95\u001b[0m     result \u001b[38;5;241m=\u001b[39m draw(artist, renderer, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m     96\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m renderer\u001b[38;5;241m.\u001b[39m_rasterizing:\n\u001b[0;32m     97\u001b[0m         renderer\u001b[38;5;241m.\u001b[39mstop_rasterizing()\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\artist.py:72\u001b[0m, in \u001b[0;36mallow_rasterization.<locals>.draw_wrapper\u001b[1;34m(artist, renderer)\u001b[0m\n\u001b[0;32m     69\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m artist\u001b[38;5;241m.\u001b[39mget_agg_filter() \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m     70\u001b[0m         renderer\u001b[38;5;241m.\u001b[39mstart_filter()\n\u001b[1;32m---> 72\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mdraw\u001b[49m\u001b[43m(\u001b[49m\u001b[43martist\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m     73\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m     74\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m artist\u001b[38;5;241m.\u001b[39mget_agg_filter() \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\figure.py:3140\u001b[0m, in \u001b[0;36mFigure.draw\u001b[1;34m(self, renderer)\u001b[0m\n\u001b[0;32m   3137\u001b[0m         \u001b[38;5;66;03m# ValueError can occur when resizing a window.\u001b[39;00m\n\u001b[0;32m   3139\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpatch\u001b[38;5;241m.\u001b[39mdraw(renderer)\n\u001b[1;32m-> 3140\u001b[0m \u001b[43mmimage\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_draw_list_compositing_images\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m   3141\u001b[0m \u001b[43m    \u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43martists\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msuppressComposite\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m   3143\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m sfig \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msubfigs:\n\u001b[0;32m   3144\u001b[0m     sfig\u001b[38;5;241m.\u001b[39mdraw(renderer)\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\image.py:131\u001b[0m, in \u001b[0;36m_draw_list_compositing_images\u001b[1;34m(renderer, parent, artists, suppress_composite)\u001b[0m\n\u001b[0;32m    129\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m not_composite \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m has_images:\n\u001b[0;32m    130\u001b[0m     \u001b[38;5;28;01mfor\u001b[39;00m a \u001b[38;5;129;01min\u001b[39;00m artists:\n\u001b[1;32m--> 131\u001b[0m         \u001b[43ma\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdraw\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m    132\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m    133\u001b[0m     \u001b[38;5;66;03m# Composite any adjacent images together\u001b[39;00m\n\u001b[0;32m    134\u001b[0m     image_group \u001b[38;5;241m=\u001b[39m []\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\artist.py:72\u001b[0m, in \u001b[0;36mallow_rasterization.<locals>.draw_wrapper\u001b[1;34m(artist, renderer)\u001b[0m\n\u001b[0;32m     69\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m artist\u001b[38;5;241m.\u001b[39mget_agg_filter() \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m     70\u001b[0m         renderer\u001b[38;5;241m.\u001b[39mstart_filter()\n\u001b[1;32m---> 72\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mdraw\u001b[49m\u001b[43m(\u001b[49m\u001b[43martist\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m     73\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m     74\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m artist\u001b[38;5;241m.\u001b[39mget_agg_filter() \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\axes\\_base.py:3035\u001b[0m, in \u001b[0;36m_AxesBase.draw\u001b[1;34m(self, renderer)\u001b[0m\n\u001b[0;32m   3032\u001b[0m         artists\u001b[38;5;241m.\u001b[39mremove(_axis)\n\u001b[0;32m   3034\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfigure\u001b[38;5;241m.\u001b[39mcanvas\u001b[38;5;241m.\u001b[39mis_saving():\n\u001b[1;32m-> 3035\u001b[0m     artists \u001b[38;5;241m=\u001b[39m [\n\u001b[0;32m   3036\u001b[0m         a \u001b[38;5;28;01mfor\u001b[39;00m a \u001b[38;5;129;01min\u001b[39;00m artists\n\u001b[0;32m   3037\u001b[0m         \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m a\u001b[38;5;241m.\u001b[39mget_animated() \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(a, mimage\u001b[38;5;241m.\u001b[39mAxesImage)]\n\u001b[0;32m   3038\u001b[0m artists \u001b[38;5;241m=\u001b[39m \u001b[38;5;28msorted\u001b[39m(artists, key\u001b[38;5;241m=\u001b[39mattrgetter(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mzorder\u001b[39m\u001b[38;5;124m'\u001b[39m))\n\u001b[0;32m   3040\u001b[0m \u001b[38;5;66;03m# rasterize artists with negative zorder\u001b[39;00m\n\u001b[0;32m   3041\u001b[0m \u001b[38;5;66;03m# if the minimum zorder is negative, start rasterization\u001b[39;00m\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\axes\\_base.py:3037\u001b[0m, in \u001b[0;36m<listcomp>\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m   3032\u001b[0m         artists\u001b[38;5;241m.\u001b[39mremove(_axis)\n\u001b[0;32m   3034\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfigure\u001b[38;5;241m.\u001b[39mcanvas\u001b[38;5;241m.\u001b[39mis_saving():\n\u001b[0;32m   3035\u001b[0m     artists \u001b[38;5;241m=\u001b[39m [\n\u001b[0;32m   3036\u001b[0m         a \u001b[38;5;28;01mfor\u001b[39;00m a \u001b[38;5;129;01min\u001b[39;00m artists\n\u001b[1;32m-> 3037\u001b[0m         \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[43ma\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_animated\u001b[49m() \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(a, mimage\u001b[38;5;241m.\u001b[39mAxesImage)]\n\u001b[0;32m   3038\u001b[0m artists \u001b[38;5;241m=\u001b[39m \u001b[38;5;28msorted\u001b[39m(artists, key\u001b[38;5;241m=\u001b[39mattrgetter(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mzorder\u001b[39m\u001b[38;5;124m'\u001b[39m))\n\u001b[0;32m   3040\u001b[0m \u001b[38;5;66;03m# rasterize artists with negative zorder\u001b[39;00m\n\u001b[0;32m   3041\u001b[0m \u001b[38;5;66;03m# if the minimum zorder is negative, start rasterization\u001b[39;00m\n",
      "\u001b[1;31mAttributeError\u001b[0m: 'bool' object has no attribute 'get_animated'"
     ]
    },
    {
     "ename": "AttributeError",
     "evalue": "'bool' object has no attribute 'zorder'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\IPython\\core\\formatters.py:340\u001b[0m, in \u001b[0;36mBaseFormatter.__call__\u001b[1;34m(self, obj)\u001b[0m\n\u001b[0;32m    338\u001b[0m     \u001b[38;5;28;01mpass\u001b[39;00m\n\u001b[0;32m    339\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m--> 340\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mprinter\u001b[49m\u001b[43m(\u001b[49m\u001b[43mobj\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m    341\u001b[0m \u001b[38;5;66;03m# Finally look for special method names\u001b[39;00m\n\u001b[0;32m    342\u001b[0m method \u001b[38;5;241m=\u001b[39m get_real_method(obj, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprint_method)\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\IPython\\core\\pylabtools.py:152\u001b[0m, in \u001b[0;36mprint_figure\u001b[1;34m(fig, fmt, bbox_inches, base64, **kwargs)\u001b[0m\n\u001b[0;32m    149\u001b[0m     \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbackend_bases\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m FigureCanvasBase\n\u001b[0;32m    150\u001b[0m     FigureCanvasBase(fig)\n\u001b[1;32m--> 152\u001b[0m fig\u001b[38;5;241m.\u001b[39mcanvas\u001b[38;5;241m.\u001b[39mprint_figure(bytes_io, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkw)\n\u001b[0;32m    153\u001b[0m data \u001b[38;5;241m=\u001b[39m bytes_io\u001b[38;5;241m.\u001b[39mgetvalue()\n\u001b[0;32m    154\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m fmt \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msvg\u001b[39m\u001b[38;5;124m'\u001b[39m:\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\backend_bases.py:2342\u001b[0m, in \u001b[0;36mFigureCanvasBase.print_figure\u001b[1;34m(self, filename, dpi, facecolor, edgecolor, orientation, format, bbox_inches, pad_inches, bbox_extra_artists, backend, **kwargs)\u001b[0m\n\u001b[0;32m   2336\u001b[0m     renderer \u001b[38;5;241m=\u001b[39m _get_renderer(\n\u001b[0;32m   2337\u001b[0m         \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfigure,\n\u001b[0;32m   2338\u001b[0m         functools\u001b[38;5;241m.\u001b[39mpartial(\n\u001b[0;32m   2339\u001b[0m             print_method, orientation\u001b[38;5;241m=\u001b[39morientation)\n\u001b[0;32m   2340\u001b[0m     )\n\u001b[0;32m   2341\u001b[0m     \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mgetattr\u001b[39m(renderer, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_draw_disabled\u001b[39m\u001b[38;5;124m\"\u001b[39m, nullcontext)():\n\u001b[1;32m-> 2342\u001b[0m         \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfigure\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdraw\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m   2344\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m bbox_inches:\n\u001b[0;32m   2345\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m bbox_inches \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtight\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\artist.py:95\u001b[0m, in \u001b[0;36m_finalize_rasterization.<locals>.draw_wrapper\u001b[1;34m(artist, renderer, *args, **kwargs)\u001b[0m\n\u001b[0;32m     93\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(draw)\n\u001b[0;32m     94\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mdraw_wrapper\u001b[39m(artist, renderer, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m---> 95\u001b[0m     result \u001b[38;5;241m=\u001b[39m draw(artist, renderer, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m     96\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m renderer\u001b[38;5;241m.\u001b[39m_rasterizing:\n\u001b[0;32m     97\u001b[0m         renderer\u001b[38;5;241m.\u001b[39mstop_rasterizing()\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\artist.py:72\u001b[0m, in \u001b[0;36mallow_rasterization.<locals>.draw_wrapper\u001b[1;34m(artist, renderer)\u001b[0m\n\u001b[0;32m     69\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m artist\u001b[38;5;241m.\u001b[39mget_agg_filter() \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m     70\u001b[0m         renderer\u001b[38;5;241m.\u001b[39mstart_filter()\n\u001b[1;32m---> 72\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mdraw\u001b[49m\u001b[43m(\u001b[49m\u001b[43martist\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m     73\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m     74\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m artist\u001b[38;5;241m.\u001b[39mget_agg_filter() \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\figure.py:3140\u001b[0m, in \u001b[0;36mFigure.draw\u001b[1;34m(self, renderer)\u001b[0m\n\u001b[0;32m   3137\u001b[0m         \u001b[38;5;66;03m# ValueError can occur when resizing a window.\u001b[39;00m\n\u001b[0;32m   3139\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpatch\u001b[38;5;241m.\u001b[39mdraw(renderer)\n\u001b[1;32m-> 3140\u001b[0m \u001b[43mmimage\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_draw_list_compositing_images\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m   3141\u001b[0m \u001b[43m    \u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43martists\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msuppressComposite\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m   3143\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m sfig \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msubfigs:\n\u001b[0;32m   3144\u001b[0m     sfig\u001b[38;5;241m.\u001b[39mdraw(renderer)\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\image.py:131\u001b[0m, in \u001b[0;36m_draw_list_compositing_images\u001b[1;34m(renderer, parent, artists, suppress_composite)\u001b[0m\n\u001b[0;32m    129\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m not_composite \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m has_images:\n\u001b[0;32m    130\u001b[0m     \u001b[38;5;28;01mfor\u001b[39;00m a \u001b[38;5;129;01min\u001b[39;00m artists:\n\u001b[1;32m--> 131\u001b[0m         \u001b[43ma\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdraw\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m    132\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m    133\u001b[0m     \u001b[38;5;66;03m# Composite any adjacent images together\u001b[39;00m\n\u001b[0;32m    134\u001b[0m     image_group \u001b[38;5;241m=\u001b[39m []\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\artist.py:72\u001b[0m, in \u001b[0;36mallow_rasterization.<locals>.draw_wrapper\u001b[1;34m(artist, renderer)\u001b[0m\n\u001b[0;32m     69\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m artist\u001b[38;5;241m.\u001b[39mget_agg_filter() \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m     70\u001b[0m         renderer\u001b[38;5;241m.\u001b[39mstart_filter()\n\u001b[1;32m---> 72\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mdraw\u001b[49m\u001b[43m(\u001b[49m\u001b[43martist\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m     73\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m     74\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m artist\u001b[38;5;241m.\u001b[39mget_agg_filter() \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n",
      "File \u001b[1;32m~\\anaconda3\\envs\\tedesco\\lib\\site-packages\\matplotlib\\axes\\_base.py:3038\u001b[0m, in \u001b[0;36m_AxesBase.draw\u001b[1;34m(self, renderer)\u001b[0m\n\u001b[0;32m   3034\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfigure\u001b[38;5;241m.\u001b[39mcanvas\u001b[38;5;241m.\u001b[39mis_saving():\n\u001b[0;32m   3035\u001b[0m     artists \u001b[38;5;241m=\u001b[39m [\n\u001b[0;32m   3036\u001b[0m         a \u001b[38;5;28;01mfor\u001b[39;00m a \u001b[38;5;129;01min\u001b[39;00m artists\n\u001b[0;32m   3037\u001b[0m         \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m a\u001b[38;5;241m.\u001b[39mget_animated() \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(a, mimage\u001b[38;5;241m.\u001b[39mAxesImage)]\n\u001b[1;32m-> 3038\u001b[0m artists \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43msorted\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43martists\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkey\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mattrgetter\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mzorder\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m   3040\u001b[0m \u001b[38;5;66;03m# rasterize artists with negative zorder\u001b[39;00m\n\u001b[0;32m   3041\u001b[0m \u001b[38;5;66;03m# if the minimum zorder is negative, start rasterization\u001b[39;00m\n\u001b[0;32m   3042\u001b[0m rasterization_zorder \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_rasterization_zorder\n",
      "\u001b[1;31mAttributeError\u001b[0m: 'bool' object has no attribute 'zorder'"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 800x400 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data_sos = pd.DataFrame(data_all_rice['Class_name'])\n",
    "data_sos['x'] = data_all_rice['x']\n",
    "data_sos['y'] = data_all_rice['y']\n",
    "data_sos['doy_SOS'] = data_all_rice['doy_SOS']\n",
    "#data_sos['value_SOS'] = data_all_rice['value_SOS']\n",
    "\n",
    "\n",
    "data_pos = pd.DataFrame(data_all_rice['Class_name'])\n",
    "data_pos['x'] = data_all_rice['x']\n",
    "data_pos['y'] = data_all_rice['y']\n",
    "data_pos['doy_POS'] = data_all_rice['doy_POS']\n",
    "#data_pos['value_POS'] = data_all_rice['value_POS']\n",
    "\n",
    "\n",
    "data_eos = pd.DataFrame(data_all_rice['Class_name'])\n",
    "data_eos['x'] = data_all_rice['x']\n",
    "data_eos['y'] = data_all_rice['y']\n",
    "data_eos['doy_EOS'] = data_all_rice['doy_EOS']\n",
    "#data_eos['value_EOS'] = data_all_rice['value_EOS']\n",
    "\n",
    "data_inc = pd.DataFrame(data_all_rice['Class_name'])\n",
    "data_inc['x'] = data_all_rice['x']\n",
    "data_inc['y'] = data_all_rice['y']\n",
    "data_inc['Increase'] = data_all_rice['Increase']\n",
    "\n",
    "data_dec = pd.DataFrame(data_all_rice['Class_name'])\n",
    "data_dec['x'] = data_all_rice['x']\n",
    "data_dec['y'] = data_all_rice['y']\n",
    "data_dec['Decrease'] = data_all_rice['Decrease']\n",
    "\n",
    "data_los = pd.DataFrame(data_all_rice['Class_name'])\n",
    "data_los['x'] = data_all_rice['x']\n",
    "data_los['y'] = data_all_rice['y']\n",
    "data_los['Total_Lenght'] = data_all_rice['Total_Lenght']\n",
    "\n",
    "#data_los.to_excel('../data/los_points_dataxx.xlsx', index=True, header=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Class</th>\n",
       "      <th>Samples</th>\n",
       "      <th>%</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Modern</td>\n",
       "      <td>529</td>\n",
       "      <td>50.57</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>517</td>\n",
       "      <td>49.43</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         Class  Samples      %\n",
       "1       Modern      529  50.57\n",
       "0  Traditional      517  49.43"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#check number of data by class\n",
    "from collections import Counter\n",
    "\n",
    "def class_count(a):\n",
    "    counter=Counter(a)\n",
    "    kv=[list(counter.keys()),list(counter.values())]\n",
    "    abt2 = pd.DataFrame(np.array(kv).T, columns=['Class','Samples'])\n",
    "    abt2['Samples'] = abt2['Samples'].astype('int64')\n",
    "    abt2['%'] = round(abt2['Samples'] / a.shape[0] * 100, 2)\n",
    "    return abt2.sort_values('Samples',ascending=False)\n",
    "\n",
    "class_count(data_los['Class_name'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Xh32rC9Ewcdk"
   },
   "source": [
    "# Training"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import metrics\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from imblearn.pipeline import Pipeline\n",
    "from sklearn.model_selection import cross_validate\n",
    "from sklearn.model_selection import RepeatedStratifiedKFold\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of combinations =  216\n",
      "CPU times: total: 0 ns\n",
      "Wall time: 0 ns\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GridSearchCV(cv=RepeatedStratifiedKFold(n_repeats=5, n_splits=10, random_state=42),\n",
       "             estimator=Pipeline(steps=[(&#x27;scl&#x27;, StandardScaler()),\n",
       "                                       (&#x27;rfc&#x27;,\n",
       "                                        RandomForestClassifier(random_state=42))]),\n",
       "             n_jobs=-1,\n",
       "             param_grid={&#x27;rfc__class_weight&#x27;: [&#x27;balanced&#x27;],\n",
       "                         &#x27;rfc__max_depth&#x27;: [5, 10, 20],\n",
       "                         &#x27;rfc__max_features&#x27;: [&#x27;sqrt&#x27;, &#x27;log2&#x27;],\n",
       "                         &#x27;rfc__min_samples_leaf&#x27;: [1, 2, 4],\n",
       "                         &#x27;rfc__min_samples_split&#x27;: [2, 5, 10],\n",
       "                         &#x27;rfc__n_estimators&#x27;: [10, 50, 100, 500]},\n",
       "             return_train_score=True, scoring=&#x27;accuracy&#x27;, verbose=10)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" ><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">GridSearchCV</label><div class=\"sk-toggleable__content\"><pre>GridSearchCV(cv=RepeatedStratifiedKFold(n_repeats=5, n_splits=10, random_state=42),\n",
       "             estimator=Pipeline(steps=[(&#x27;scl&#x27;, StandardScaler()),\n",
       "                                       (&#x27;rfc&#x27;,\n",
       "                                        RandomForestClassifier(random_state=42))]),\n",
       "             n_jobs=-1,\n",
       "             param_grid={&#x27;rfc__class_weight&#x27;: [&#x27;balanced&#x27;],\n",
       "                         &#x27;rfc__max_depth&#x27;: [5, 10, 20],\n",
       "                         &#x27;rfc__max_features&#x27;: [&#x27;sqrt&#x27;, &#x27;log2&#x27;],\n",
       "                         &#x27;rfc__min_samples_leaf&#x27;: [1, 2, 4],\n",
       "                         &#x27;rfc__min_samples_split&#x27;: [2, 5, 10],\n",
       "                         &#x27;rfc__n_estimators&#x27;: [10, 50, 100, 500]},\n",
       "             return_train_score=True, scoring=&#x27;accuracy&#x27;, verbose=10)</pre></div></div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" ><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">estimator: Pipeline</label><div class=\"sk-toggleable__content\"><pre>Pipeline(steps=[(&#x27;scl&#x27;, StandardScaler()),\n",
       "                (&#x27;rfc&#x27;, RandomForestClassifier(random_state=42))])</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" ><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">StandardScaler</label><div class=\"sk-toggleable__content\"><pre>StandardScaler()</pre></div></div></div><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" ><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">RandomForestClassifier</label><div class=\"sk-toggleable__content\"><pre>RandomForestClassifier(random_state=42)</pre></div></div></div></div></div></div></div></div></div></div></div></div>"
      ],
      "text/plain": [
       "GridSearchCV(cv=RepeatedStratifiedKFold(n_repeats=5, n_splits=10, random_state=42),\n",
       "             estimator=Pipeline(steps=[('scl', StandardScaler()),\n",
       "                                       ('rfc',\n",
       "                                        RandomForestClassifier(random_state=42))]),\n",
       "             n_jobs=-1,\n",
       "             param_grid={'rfc__class_weight': ['balanced'],\n",
       "                         'rfc__max_depth': [5, 10, 20],\n",
       "                         'rfc__max_features': ['sqrt', 'log2'],\n",
       "                         'rfc__min_samples_leaf': [1, 2, 4],\n",
       "                         'rfc__min_samples_split': [2, 5, 10],\n",
       "                         'rfc__n_estimators': [10, 50, 100, 500]},\n",
       "             return_train_score=True, scoring='accuracy', verbose=10)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%%time \n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "\n",
    "rfc = RandomForestClassifier(random_state=42)\n",
    "\n",
    "rf_pipe = Pipeline([('scl', StandardScaler()),\n",
    "                    ('rfc', rfc)])\n",
    "\n",
    "rf_grid_param = {\n",
    "    'rfc__n_estimators': [10, 50, 100, 500],\n",
    "    'rfc__max_depth': [5, 10, 20],\n",
    "    'rfc__min_samples_split': [2, 5, 10],\n",
    "    'rfc__min_samples_leaf': [1, 2, 4],\n",
    "    'rfc__max_features': ['sqrt', 'log2'],\n",
    "    'rfc__class_weight': ['balanced']\n",
    "}\n",
    "\n",
    "rf_gs = GridSearchCV(estimator=rf_pipe, #select pipeline\n",
    "                     param_grid=rf_grid_param, #select parameters\n",
    "                     cv=RepeatedStratifiedKFold(n_splits=10, n_repeats=5, random_state=42), #10-folds cross validation,\n",
    "                     scoring='accuracy',\n",
    "                     n_jobs = -1, #use 100% of the cpu\n",
    "                     return_train_score=True,\n",
    "                     verbose = 10)\n",
    "\n",
    "#print number of combinations and parameters\n",
    "num_combinations = 1\n",
    "for k in rf_grid_param.keys(): num_combinations *= len(rf_grid_param[k])\n",
    "print('Number of combinations = ', num_combinations)\n",
    "rf_gs"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "## DATA START"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "# loop through all models to get the mean cross validated score\n",
    "from sklearn.model_selection import StratifiedKFold, cross_val_score\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.model_selection import StratifiedKFold, cross_val_score\n",
    "from sklearn import preprocessing\n",
    "\n",
    "X = data_sos.drop(labels=['Class_name','x','y'], axis=1)\n",
    "y = data_sos[['Class_name','x','y']]\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=42, stratify = y['Class_name'])\n",
    "\n",
    "std_scale = preprocessing.StandardScaler().fit(X_train)\n",
    "\n",
    "X_train = std_scale.transform(X_train)\n",
    "X_test = std_scale.transform(X_test)\n",
    "\n",
    "le = LabelEncoder()\n",
    "\n",
    "y_train_encoded = le.fit_transform(y_train['Class_name'])\n",
    "y_test_encoded = le.transform(y_test['Class_name'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 50 folds for each of 216 candidates, totalling 10800 fits\n",
      "Training with RandomForestClassifier\n",
      "Classification Report:\n",
      "                precision recall f1-score support\n",
      "0        Modern      0.64   0.57     0.60     159\n",
      "1   Traditional      0.60   0.66     0.63     155\n",
      "2      accuracy       NaN    NaN     0.62     314\n",
      "3     macro avg      0.62   0.62     0.62     314\n",
      "4  weighted avg      0.62   0.62     0.62     314\n",
      "-----------------------------------------------------------------\n",
      "Confusion Matrix:\n",
      "          0         1\n",
      "0  0.572327  0.427673\n",
      "1  0.335484  0.664516\n",
      "-----------------------------------------------------------------\n",
      "Cross-validation...\n",
      "     rank_test_score  mean_train_score  std_train_score  mean_test_score  \\\n",
      "211                1          0.655859         0.005154         0.619674   \n",
      "207                1          0.655859         0.005154         0.619674   \n",
      "175                1          0.655859         0.005154         0.619674   \n",
      "171                1          0.655859         0.005154         0.619674   \n",
      "215                5          0.655828         0.005133         0.619400   \n",
      "\n",
      "     std_test_score                                             params  \n",
      "211        0.048535  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "207        0.048535  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "175        0.048535  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "171        0.048535  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "215        0.047655  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "-----------------------------------------------------------------\n",
      "-----------------------------------------------------------------\n",
      "  Variable  Importance\n",
      "0  doy_SOS         1.0\n",
      "-----------------------------------------------------------------\n",
      "-----------------------------------------------------------------\n",
      "CPU times: total: 46min 58s\n",
      "Wall time: 2h 16min 44s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "import joblib\n",
    "from joblib import parallel_backend\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "algorithm_name = ['RandomForestClassifier']\n",
    "algorithm = [rf_gs]\n",
    "\n",
    "with parallel_backend('dask'):\n",
    "    \n",
    "    for item in range (0,1):\n",
    "        \n",
    "        model = algorithm[item]\n",
    "        model.fit(X_train, y_train_encoded)\n",
    "        \n",
    "        print('Training with',algorithm_name[item])\n",
    "        \n",
    "        y_pred = model.predict(X_test)\n",
    "        \n",
    "        #pred 2020 all polderas\n",
    "        df_pred= pd.DataFrame(y_pred)\n",
    "        \n",
    "        #labels\n",
    "        \n",
    "        class_labels = ['Traditional','Modern']\n",
    "        \n",
    "        ##CR\n",
    "        print('Classification Report:')\n",
    "        class_report = classification_report_to_dataframe(classification_report(y_test_encoded,\n",
    "                                                                                df_pred,\n",
    "                                                                                target_names=list(le.classes_)))\n",
    "        print(class_report)\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        #CM\n",
    "        print('Confusion Matrix:')\n",
    "        cf_m = confusion_matrix(y_test_encoded, df_pred, normalize= 'true')\n",
    "        cf_m_df = pd.DataFrame(cf_m)\n",
    "        print(cf_m_df)\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        ##CV\n",
    "        print('Cross-validation...')\n",
    "        df_cv_results = pd.DataFrame(model.cv_results_)\n",
    "        df_cv_results.sort_values('rank_test_score', inplace=True)\n",
    "        cv_resul_df = pd.DataFrame(df_cv_results['rank_test_score'])\n",
    "        cv_resul_df['mean_train_score'] = df_cv_results['mean_train_score']\n",
    "        cv_resul_df['std_train_score'] = df_cv_results['std_train_score']\n",
    "        cv_resul_df['mean_test_score'] = df_cv_results['mean_test_score']\n",
    "        cv_resul_df['std_test_score'] = df_cv_results['std_test_score']\n",
    "        cv_resul_df['params'] = df_cv_results['params']\n",
    "        print(cv_resul_df.head(5))\n",
    "        print('-----------------------------------------------------------------')\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        #Feature Importance\n",
    "        import_model = model.best_estimator_._final_estimator.feature_importances_\n",
    "        var_columns = [c for c in X if c not in ['Class_name']]\n",
    "        df_var_imp = pd.DataFrame({'Variable': var_columns,\n",
    "                                   'Importance': import_model}) \\\n",
    "                .sort_values(by='Importance', ascending=False) \\\n",
    "                .reset_index(drop=True)\n",
    "        print(df_var_imp.head(5))\n",
    "        print('-----------------------------------------------------------------')\n",
    "        print('-----------------------------------------------------------------')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_test_ = df_pred\n",
    "df_test_ = df_test_.rename(columns={0:'class_pred'})\n",
    "df_test_coords = pd.DataFrame(df_test_)\n",
    "\n",
    "\n",
    "y_test_ = y_test.reset_index()\n",
    "df_test_coords['class_obs_name'] = y_test_['Class_name'] \n",
    "df_test_coords['class_pred_name'] =  le.inverse_transform(df_test_coords['class_pred'])\n",
    "df_test_coords['x'] = y_test_['x']\n",
    "df_test_coords['y'] = y_test_['y']\n",
    "\n",
    "df_test_coords = df_test_coords.drop(columns=['class_pred'])\n",
    "\n",
    "df_test_coords.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\validation_samples\\sos_validation.xlsx', index=True, header=True)\n",
    "\n",
    "df_test_coords.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pickle import dump\n",
    "from joblib import dump\n",
    "\n",
    "class_report.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cr_data_sos.xlsx', index=True, header=True)\n",
    "cf_m_df.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cm_data_sos.xlsx', index=True, header=True)\n",
    "cv_resul_df.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cv_data_sos.xlsx', index=True, header=True)\n",
    "df_var_imp.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\fi_data_sos.xlsx', index=True, header=True)\n",
    "\n",
    "\n",
    "# save the model\n",
    "dump(model, r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\model\\model_data_sos.joblib')\n",
    "# save the scaler\n",
    "dump(std_scale, open(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\model\\scaler_data_sos.pkl', 'wb'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "## DATA PEAK"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "# loop through all models to get the mean cross validated score\n",
    "from sklearn.model_selection import StratifiedKFold, cross_val_score\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.model_selection import StratifiedKFold, cross_val_score\n",
    "from sklearn import preprocessing\n",
    "\n",
    "X = data_pos.drop(labels=['Class_name','x','y'], axis=1)\n",
    "y = data_pos[['Class_name','x','y']]\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=42, stratify = y['Class_name'])\n",
    "\n",
    "std_scale = preprocessing.StandardScaler().fit(X_train)\n",
    "\n",
    "X_train = std_scale.transform(X_train)\n",
    "X_test = std_scale.transform(X_test)\n",
    "\n",
    "le = LabelEncoder()\n",
    "\n",
    "y_train_encoded = le.fit_transform(y_train['Class_name'])\n",
    "y_test_encoded = le.transform(y_test['Class_name'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 50 folds for each of 216 candidates, totalling 10800 fits\n",
      "Training with RandomForestClassifier\n",
      "Classification Report:\n",
      "                precision recall f1-score support\n",
      "0        Modern      0.53   0.71     0.61     159\n",
      "1   Traditional      0.54   0.35     0.43     155\n",
      "2      accuracy       NaN    NaN     0.54     314\n",
      "3     macro avg      0.54   0.53     0.52     314\n",
      "4  weighted avg      0.54   0.54     0.52     314\n",
      "-----------------------------------------------------------------\n",
      "Confusion Matrix:\n",
      "          0         1\n",
      "0  0.710692  0.289308\n",
      "1  0.645161  0.354839\n",
      "-----------------------------------------------------------------\n",
      "Cross-validation...\n",
      "    rank_test_score  mean_train_score  std_train_score  mean_test_score  \\\n",
      "21                1          0.590133         0.006855         0.505757   \n",
      "57                1          0.590133         0.006855         0.505757   \n",
      "46                3          0.591135         0.006725         0.505746   \n",
      "10                3          0.591135         0.006725         0.505746   \n",
      "17                5          0.590497         0.006943         0.505479   \n",
      "\n",
      "    std_test_score                                             params  \n",
      "21        0.067305  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "57        0.067305  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "46        0.066449  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "10        0.066449  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "17        0.068902  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "-----------------------------------------------------------------\n",
      "-----------------------------------------------------------------\n",
      "  Variable  Importance\n",
      "0  doy_POS         1.0\n",
      "-----------------------------------------------------------------\n",
      "-----------------------------------------------------------------\n",
      "CPU times: total: 1h 59s\n",
      "Wall time: 1h 34min 48s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "import joblib\n",
    "from joblib import parallel_backend\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "algorithm_name = ['RandomForestClassifier']\n",
    "algorithm = [rf_gs]\n",
    "\n",
    "with parallel_backend('dask'):\n",
    "    \n",
    "    for item in range (0,1):\n",
    "        \n",
    "        model = algorithm[item]\n",
    "        model.fit(X_train, y_train_encoded) \n",
    "        \n",
    "        print('Training with',algorithm_name[item])\n",
    "        \n",
    "        y_pred = model.predict(X_test)\n",
    "        \n",
    "        #pred 2020 all polderas\n",
    "        df_pred= pd.DataFrame(y_pred)\n",
    "        \n",
    "        #labels\n",
    "        \n",
    "        class_labels = ['Traditional','Modern']\n",
    "        \n",
    "        ##CR\n",
    "        print('Classification Report:')\n",
    "        class_report = classification_report_to_dataframe(classification_report(y_test_encoded,\n",
    "                                                                                df_pred,\n",
    "                                                                                target_names=list(le.classes_)))\n",
    "        print(class_report)\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        #CM\n",
    "        print('Confusion Matrix:')\n",
    "        cf_m = confusion_matrix(y_test_encoded, df_pred, normalize= 'true')\n",
    "        cf_m_df = pd.DataFrame(cf_m)\n",
    "        print(cf_m_df)\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        ##CV\n",
    "        print('Cross-validation...')\n",
    "        df_cv_results = pd.DataFrame(model.cv_results_)\n",
    "        df_cv_results.sort_values('rank_test_score', inplace=True)\n",
    "        cv_resul_df = pd.DataFrame(df_cv_results['rank_test_score'])\n",
    "        cv_resul_df['mean_train_score'] = df_cv_results['mean_train_score']\n",
    "        cv_resul_df['std_train_score'] = df_cv_results['std_train_score']\n",
    "        cv_resul_df['mean_test_score'] = df_cv_results['mean_test_score']\n",
    "        cv_resul_df['std_test_score'] = df_cv_results['std_test_score']\n",
    "        cv_resul_df['params'] = df_cv_results['params']\n",
    "        print(cv_resul_df.head(5))\n",
    "        print('-----------------------------------------------------------------')\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        #Feature Importance\n",
    "        import_model = model.best_estimator_._final_estimator.feature_importances_\n",
    "        var_columns = [c for c in X if c not in ['Class_name']]\n",
    "        df_var_imp = pd.DataFrame({'Variable': var_columns,\n",
    "                                   'Importance': import_model}) \\\n",
    "                .sort_values(by='Importance', ascending=False) \\\n",
    "                .reset_index(drop=True)\n",
    "        print(df_var_imp.head(5))\n",
    "        print('-----------------------------------------------------------------')\n",
    "        print('-----------------------------------------------------------------')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>class_obs_name</th>\n",
       "      <th>class_pred_name</th>\n",
       "      <th>x</th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Modern</td>\n",
       "      <td>749860.355965</td>\n",
       "      <td>2.502026e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Modern</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>748314.390156</td>\n",
       "      <td>2.500312e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Modern</td>\n",
       "      <td>759238.354770</td>\n",
       "      <td>2.506520e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Modern</td>\n",
       "      <td>754710.403501</td>\n",
       "      <td>2.519628e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Modern</td>\n",
       "      <td>747939.322366</td>\n",
       "      <td>2.500585e+06</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  class_obs_name class_pred_name              x             y\n",
       "0    Traditional          Modern  749860.355965  2.502026e+06\n",
       "1         Modern     Traditional  748314.390156  2.500312e+06\n",
       "2    Traditional          Modern  759238.354770  2.506520e+06\n",
       "3    Traditional          Modern  754710.403501  2.519628e+06\n",
       "4    Traditional          Modern  747939.322366  2.500585e+06"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test_ = df_pred\n",
    "df_test_ = df_test_.rename(columns={0:'class_pred'})\n",
    "df_test_coords = pd.DataFrame(df_test_)\n",
    "\n",
    "\n",
    "y_test_ = y_test.reset_index()\n",
    "df_test_coords['class_obs_name'] = y_test_['Class_name'] \n",
    "df_test_coords['class_pred_name'] =  le.inverse_transform(df_test_coords['class_pred'])\n",
    "df_test_coords['x'] = y_test_['x']\n",
    "df_test_coords['y'] = y_test_['y']\n",
    "\n",
    "df_test_coords = df_test_coords.drop(columns=['class_pred'])\n",
    "\n",
    "df_test_coords.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\validation_samples\\pos_validation.xlsx', index=True, header=True)\n",
    "\n",
    "df_test_coords.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pickle import dump\n",
    "from joblib import dump\n",
    "\n",
    "class_report.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cr_data_pos.xlsx', index=True, header=True)\n",
    "cf_m_df.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cm_data_pos.xlsx', index=True, header=True)\n",
    "cv_resul_df.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cv_data_pos.xlsx', index=True, header=True)\n",
    "df_var_imp.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\fi_data_pos.xlsx', index=True, header=True)\n",
    "\n",
    "\n",
    "# save the model\n",
    "dump(model, r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\model\\model_data_pos.joblib')\n",
    "# save the scaler\n",
    "dump(std_scale, open(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\model\\scaler_data_pos.pkl', 'wb'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "## DATA END"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "# loop through all models to get the mean cross validated score\n",
    "from sklearn.model_selection import StratifiedKFold, cross_val_score\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.model_selection import StratifiedKFold, cross_val_score\n",
    "from sklearn import preprocessing\n",
    "\n",
    "X = data_eos.drop(labels=['Class_name','x','y'], axis=1)\n",
    "y = data_eos[['Class_name','x','y']]\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=42, stratify = y['Class_name'])\n",
    "\n",
    "std_scale = preprocessing.StandardScaler().fit(X_train)\n",
    "\n",
    "X_train = std_scale.transform(X_train)\n",
    "X_test = std_scale.transform(X_test)\n",
    "\n",
    "le = LabelEncoder()\n",
    "\n",
    "y_train_encoded = le.fit_transform(y_train['Class_name'])\n",
    "y_test_encoded = le.transform(y_test['Class_name'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 50 folds for each of 216 candidates, totalling 10800 fits\n",
      "Training with RandomForestClassifier\n",
      "Classification Report:\n",
      "                precision recall f1-score support\n",
      "0        Modern      0.70   0.79     0.74     159\n",
      "1   Traditional      0.75   0.66     0.70     155\n",
      "2      accuracy       NaN    NaN     0.72     314\n",
      "3     macro avg      0.73   0.72     0.72     314\n",
      "4  weighted avg      0.73   0.72     0.72     314\n",
      "-----------------------------------------------------------------\n",
      "Confusion Matrix:\n",
      "          0         1\n",
      "0  0.786164  0.213836\n",
      "1  0.341935  0.658065\n",
      "-----------------------------------------------------------------\n",
      "Cross-validation...\n",
      "    rank_test_score  mean_train_score  std_train_score  mean_test_score  \\\n",
      "23                1          0.763115         0.005564         0.745087   \n",
      "59                1          0.763115         0.005564         0.745087   \n",
      "31                3          0.762963         0.005514         0.745080   \n",
      "27                3          0.762963         0.005514         0.745080   \n",
      "67                3          0.762963         0.005514         0.745080   \n",
      "\n",
      "    std_test_score                                             params  \n",
      "23        0.050885  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "59        0.050885  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "31        0.051501  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "27        0.051501  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "67        0.051501  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "-----------------------------------------------------------------\n",
      "-----------------------------------------------------------------\n",
      "  Variable  Importance\n",
      "0  doy_EOS         1.0\n",
      "-----------------------------------------------------------------\n",
      "-----------------------------------------------------------------\n",
      "CPU times: total: 54min 49s\n",
      "Wall time: 1h 24min 23s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "import joblib\n",
    "from joblib import parallel_backend\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "algorithm_name = ['RandomForestClassifier']\n",
    "algorithm = [rf_gs]\n",
    "\n",
    "with parallel_backend('dask'):\n",
    "    \n",
    "    for item in range (0,1):\n",
    "        \n",
    "        model = algorithm[item]\n",
    "        model.fit(X_train, y_train_encoded) \n",
    "        \n",
    "        print('Training with',algorithm_name[item])\n",
    "        \n",
    "        y_pred = model.predict(X_test)\n",
    "        \n",
    "        #pred 2020 all polderas\n",
    "        df_pred= pd.DataFrame(y_pred)\n",
    "        \n",
    "        #labels\n",
    "        \n",
    "        class_labels = ['Traditional','Modern']\n",
    "        \n",
    "        ##CR\n",
    "        print('Classification Report:')\n",
    "        class_report = classification_report_to_dataframe(classification_report(y_test_encoded,\n",
    "                                                                                df_pred,\n",
    "                                                                                target_names=list(le.classes_)))\n",
    "        print(class_report)\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        #CM\n",
    "        print('Confusion Matrix:')\n",
    "        cf_m = confusion_matrix(y_test_encoded, df_pred, normalize= 'true')\n",
    "        cf_m_df = pd.DataFrame(cf_m)\n",
    "        print(cf_m_df)\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        ##CV\n",
    "        print('Cross-validation...')\n",
    "        df_cv_results = pd.DataFrame(model.cv_results_)\n",
    "        df_cv_results.sort_values('rank_test_score', inplace=True)\n",
    "        cv_resul_df = pd.DataFrame(df_cv_results['rank_test_score'])\n",
    "        cv_resul_df['mean_train_score'] = df_cv_results['mean_train_score']\n",
    "        cv_resul_df['std_train_score'] = df_cv_results['std_train_score']\n",
    "        cv_resul_df['mean_test_score'] = df_cv_results['mean_test_score']\n",
    "        cv_resul_df['std_test_score'] = df_cv_results['std_test_score']\n",
    "        cv_resul_df['params'] = df_cv_results['params']\n",
    "        print(cv_resul_df.head(5))\n",
    "        print('-----------------------------------------------------------------')\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        #Feature Importance\n",
    "        import_model = model.best_estimator_._final_estimator.feature_importances_\n",
    "        var_columns = [c for c in X if c not in ['Class_name']]\n",
    "        df_var_imp = pd.DataFrame({'Variable': var_columns,\n",
    "                                   'Importance': import_model}) \\\n",
    "                .sort_values(by='Importance', ascending=False) \\\n",
    "                .reset_index(drop=True)\n",
    "        print(df_var_imp.head(5))\n",
    "        print('-----------------------------------------------------------------')\n",
    "        print('-----------------------------------------------------------------')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>class_obs_name</th>\n",
       "      <th>class_pred_name</th>\n",
       "      <th>x</th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Modern</td>\n",
       "      <td>749860.355965</td>\n",
       "      <td>2.502026e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Modern</td>\n",
       "      <td>Modern</td>\n",
       "      <td>748314.390156</td>\n",
       "      <td>2.500312e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>759238.354770</td>\n",
       "      <td>2.506520e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>754710.403501</td>\n",
       "      <td>2.519628e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>747939.322366</td>\n",
       "      <td>2.500585e+06</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  class_obs_name class_pred_name              x             y\n",
       "0    Traditional          Modern  749860.355965  2.502026e+06\n",
       "1         Modern          Modern  748314.390156  2.500312e+06\n",
       "2    Traditional     Traditional  759238.354770  2.506520e+06\n",
       "3    Traditional     Traditional  754710.403501  2.519628e+06\n",
       "4    Traditional     Traditional  747939.322366  2.500585e+06"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test_ = df_pred\n",
    "df_test_ = df_test_.rename(columns={0:'class_pred'})\n",
    "df_test_coords = pd.DataFrame(df_test_)\n",
    "\n",
    "\n",
    "y_test_ = y_test.reset_index()\n",
    "df_test_coords['class_obs_name'] = y_test_['Class_name'] \n",
    "df_test_coords['class_pred_name'] =  le.inverse_transform(df_test_coords['class_pred'])\n",
    "df_test_coords['x'] = y_test_['x']\n",
    "df_test_coords['y'] = y_test_['y']\n",
    "\n",
    "df_test_coords = df_test_coords.drop(columns=['class_pred'])\n",
    "\n",
    "df_test_coords.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\validation_samples\\eos_validation.xlsx', index=True, header=True)\n",
    "\n",
    "df_test_coords.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pickle import dump\n",
    "from joblib import dump\n",
    "\n",
    "class_report.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cr_data_eos.xlsx', index=True, header=True)\n",
    "cf_m_df.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cm_data_eos.xlsx', index=True, header=True)\n",
    "cv_resul_df.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cv_data_eos.xlsx', index=True, header=True)\n",
    "df_var_imp.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\fi_data_eos.xlsx', index=True, header=True)\n",
    "\n",
    "\n",
    "# save the model\n",
    "dump(model, r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\model\\model_data_eos.joblib')\n",
    "# save the scaler\n",
    "dump(std_scale, open(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\model\\scaler_data_eos.pkl', 'wb'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "## DATA INCREASE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "# loop through all models to get the mean cross validated score\n",
    "from sklearn.model_selection import StratifiedKFold, cross_val_score\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.model_selection import StratifiedKFold, cross_val_score\n",
    "from sklearn import preprocessing\n",
    "\n",
    "X = data_inc.drop(labels=['Class_name','x','y'], axis=1)\n",
    "y = data_inc[['Class_name','x','y']]\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=42, stratify = y['Class_name'])\n",
    "\n",
    "std_scale = preprocessing.StandardScaler().fit(X_train)\n",
    "\n",
    "X_train = std_scale.transform(X_train)\n",
    "X_test = std_scale.transform(X_test)\n",
    "\n",
    "le = LabelEncoder()\n",
    "\n",
    "y_train_encoded = le.fit_transform(y_train['Class_name'])\n",
    "y_test_encoded = le.transform(y_test['Class_name'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 50 folds for each of 216 candidates, totalling 10800 fits\n",
      "Training with RandomForestClassifier\n",
      "Classification Report:\n",
      "                precision recall f1-score support\n",
      "0        Modern      0.63   0.64     0.64     159\n",
      "1   Traditional      0.63   0.62     0.62     155\n",
      "2      accuracy       NaN    NaN     0.63     314\n",
      "3     macro avg      0.63   0.63     0.63     314\n",
      "4  weighted avg      0.63   0.63     0.63     314\n",
      "-----------------------------------------------------------------\n",
      "Confusion Matrix:\n",
      "          0         1\n",
      "0  0.641509  0.358491\n",
      "1  0.380645  0.619355\n",
      "-----------------------------------------------------------------\n",
      "Cross-validation...\n",
      "    rank_test_score  mean_train_score  std_train_score  mean_test_score  \\\n",
      "27                1          0.644596         0.007067         0.560641   \n",
      "63                1          0.644596         0.007067         0.560641   \n",
      "67                1          0.644596         0.007067         0.560641   \n",
      "71                1          0.644565         0.007084         0.560641   \n",
      "31                1          0.644596         0.007067         0.560641   \n",
      "\n",
      "    std_test_score                                             params  \n",
      "27        0.054279  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "63        0.054279  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "67        0.054279  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "71        0.054279  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "31        0.054279  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "-----------------------------------------------------------------\n",
      "-----------------------------------------------------------------\n",
      "   Variable  Importance\n",
      "0  Increase         1.0\n",
      "-----------------------------------------------------------------\n",
      "-----------------------------------------------------------------\n",
      "CPU times: total: 53min 23s\n",
      "Wall time: 1h 25min 8s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "import joblib\n",
    "from joblib import parallel_backend\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "algorithm_name = ['RandomForestClassifier']\n",
    "algorithm = [rf_gs]\n",
    "\n",
    "with parallel_backend('dask'):\n",
    "    \n",
    "    for item in range (0,1):\n",
    "        \n",
    "        model = algorithm[item]\n",
    "        model.fit(X_train, y_train_encoded) \n",
    "        \n",
    "        print('Training with',algorithm_name[item])\n",
    "        \n",
    "        y_pred = model.predict(X_test)\n",
    "        \n",
    "        #pred 2020 all polderas\n",
    "        df_pred= pd.DataFrame(y_pred)\n",
    "        \n",
    "        #labels\n",
    "        \n",
    "        class_labels = ['Traditional','Modern']\n",
    "        \n",
    "        ##CR\n",
    "        print('Classification Report:')\n",
    "        class_report = classification_report_to_dataframe(classification_report(y_test_encoded,\n",
    "                                                                                df_pred,\n",
    "                                                                                target_names=list(le.classes_)))\n",
    "        print(class_report)\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        #CM\n",
    "        print('Confusion Matrix:')\n",
    "        cf_m = confusion_matrix(y_test_encoded, df_pred, normalize= 'true')\n",
    "        cf_m_df = pd.DataFrame(cf_m)\n",
    "        print(cf_m_df)\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        ##CV\n",
    "        print('Cross-validation...')\n",
    "        df_cv_results = pd.DataFrame(model.cv_results_)\n",
    "        df_cv_results.sort_values('rank_test_score', inplace=True)\n",
    "        cv_resul_df = pd.DataFrame(df_cv_results['rank_test_score'])\n",
    "        cv_resul_df['mean_train_score'] = df_cv_results['mean_train_score']\n",
    "        cv_resul_df['std_train_score'] = df_cv_results['std_train_score']\n",
    "        cv_resul_df['mean_test_score'] = df_cv_results['mean_test_score']\n",
    "        cv_resul_df['std_test_score'] = df_cv_results['std_test_score']\n",
    "        cv_resul_df['params'] = df_cv_results['params']\n",
    "        print(cv_resul_df.head(5))\n",
    "        print('-----------------------------------------------------------------')\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        #Feature Importance\n",
    "        import_model = model.best_estimator_._final_estimator.feature_importances_\n",
    "        var_columns = [c for c in X if c not in ['Class_name']]\n",
    "        df_var_imp = pd.DataFrame({'Variable': var_columns,\n",
    "                                   'Importance': import_model}) \\\n",
    "                .sort_values(by='Importance', ascending=False) \\\n",
    "                .reset_index(drop=True)\n",
    "        print(df_var_imp.head(5))\n",
    "        print('-----------------------------------------------------------------')\n",
    "        print('-----------------------------------------------------------------')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>class_obs_name</th>\n",
       "      <th>class_pred_name</th>\n",
       "      <th>x</th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Modern</td>\n",
       "      <td>749860.355965</td>\n",
       "      <td>2.502026e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Modern</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>748314.390156</td>\n",
       "      <td>2.500312e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>759238.354770</td>\n",
       "      <td>2.506520e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Modern</td>\n",
       "      <td>754710.403501</td>\n",
       "      <td>2.519628e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Modern</td>\n",
       "      <td>747939.322366</td>\n",
       "      <td>2.500585e+06</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  class_obs_name class_pred_name              x             y\n",
       "0    Traditional          Modern  749860.355965  2.502026e+06\n",
       "1         Modern     Traditional  748314.390156  2.500312e+06\n",
       "2    Traditional     Traditional  759238.354770  2.506520e+06\n",
       "3    Traditional          Modern  754710.403501  2.519628e+06\n",
       "4    Traditional          Modern  747939.322366  2.500585e+06"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test_ = df_pred\n",
    "df_test_ = df_test_.rename(columns={0:'class_pred'})\n",
    "df_test_coords = pd.DataFrame(df_test_)\n",
    "\n",
    "\n",
    "y_test_ = y_test.reset_index()\n",
    "df_test_coords['class_obs_name'] = y_test_['Class_name'] \n",
    "df_test_coords['class_pred_name'] =  le.inverse_transform(df_test_coords['class_pred'])\n",
    "df_test_coords['x'] = y_test_['x']\n",
    "df_test_coords['y'] = y_test_['y']\n",
    "\n",
    "df_test_coords = df_test_coords.drop(columns=['class_pred'])\n",
    "\n",
    "df_test_coords.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\validation_samples\\inc_validation.xlsx', index=True, header=True)\n",
    "\n",
    "df_test_coords.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pickle import dump\n",
    "from joblib import dump\n",
    "\n",
    "class_report.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cr_data_inc.xlsx', index=True, header=True)\n",
    "cf_m_df.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cm_data_inc.xlsx', index=True, header=True)\n",
    "cv_resul_df.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cv_data_inc.xlsx', index=True, header=True)\n",
    "df_var_imp.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\fi_data_inc.xlsx', index=True, header=True)\n",
    "\n",
    "\n",
    "# save the model\n",
    "dump(model, r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\model\\model_data_inc.joblib')\n",
    "# save the scaler\n",
    "dump(std_scale, open(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\model\\scaler_data_inc.pkl', 'wb'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "## DATA DECREASE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "# loop through all models to get the mean cross validated score\n",
    "from sklearn.model_selection import StratifiedKFold, cross_val_score\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.model_selection import StratifiedKFold, cross_val_score\n",
    "from sklearn import preprocessing\n",
    "\n",
    "X = data_dec.drop(labels=['Class_name','x','y'], axis=1)\n",
    "y = data_dec[['Class_name','x','y']]\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=42, stratify = y['Class_name'])\n",
    "\n",
    "std_scale = preprocessing.StandardScaler().fit(X_train)\n",
    "\n",
    "X_train = std_scale.transform(X_train)\n",
    "X_test = std_scale.transform(X_test)\n",
    "\n",
    "le = LabelEncoder()\n",
    "\n",
    "y_train_encoded = le.fit_transform(y_train['Class_name'])\n",
    "y_test_encoded = le.transform(y_test['Class_name'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 50 folds for each of 216 candidates, totalling 10800 fits\n",
      "Training with RandomForestClassifier\n",
      "Classification Report:\n",
      "                precision recall f1-score support\n",
      "0        Modern      0.61   0.82     0.70     159\n",
      "1   Traditional      0.71   0.45     0.55     155\n",
      "2      accuracy       NaN    NaN     0.64     314\n",
      "3     macro avg      0.66   0.64     0.63     314\n",
      "4  weighted avg      0.66   0.64     0.63     314\n",
      "-----------------------------------------------------------------\n",
      "Confusion Matrix:\n",
      "          0         1\n",
      "0  0.823899  0.176101\n",
      "1  0.548387  0.451613\n",
      "-----------------------------------------------------------------\n",
      "Cross-validation...\n",
      "    rank_test_score  mean_train_score  std_train_score  mean_test_score  \\\n",
      "35                1          0.697451         0.006902         0.661237   \n",
      "71                1          0.697451         0.006902         0.661237   \n",
      "57                3          0.697572         0.007675         0.660981   \n",
      "21                3          0.697572         0.007675         0.660981   \n",
      "67                5          0.697481         0.006861         0.660963   \n",
      "\n",
      "    std_test_score                                             params  \n",
      "35        0.062471  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "71        0.062471  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "57        0.065019  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "21        0.065019  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "67        0.061974  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "-----------------------------------------------------------------\n",
      "-----------------------------------------------------------------\n",
      "   Variable  Importance\n",
      "0  Decrease         1.0\n",
      "-----------------------------------------------------------------\n",
      "-----------------------------------------------------------------\n",
      "CPU times: total: 56min 12s\n",
      "Wall time: 1h 26min 33s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "import joblib\n",
    "from joblib import parallel_backend\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "algorithm_name = ['RandomForestClassifier']\n",
    "algorithm = [rf_gs]\n",
    "\n",
    "with parallel_backend('dask'):\n",
    "    \n",
    "    for item in range (0,1):\n",
    "        \n",
    "        model = algorithm[item]\n",
    "        model.fit(X_train, y_train_encoded) \n",
    "        \n",
    "        print('Training with',algorithm_name[item])\n",
    "        \n",
    "        y_pred = model.predict(X_test)\n",
    "        \n",
    "        #pred 2020 all polderas\n",
    "        df_pred= pd.DataFrame(y_pred)\n",
    "        \n",
    "        #labels\n",
    "        \n",
    "        class_labels = ['Traditional','Modern']\n",
    "        \n",
    "        ##CR\n",
    "        print('Classification Report:')\n",
    "        class_report = classification_report_to_dataframe(classification_report(y_test_encoded,\n",
    "                                                                                df_pred,\n",
    "                                                                                target_names=list(le.classes_)))\n",
    "        print(class_report)\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        #CM\n",
    "        print('Confusion Matrix:')\n",
    "        cf_m = confusion_matrix(y_test_encoded, df_pred, normalize= 'true')\n",
    "        cf_m_df = pd.DataFrame(cf_m)\n",
    "        print(cf_m_df)\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        ##CV\n",
    "        print('Cross-validation...')\n",
    "        df_cv_results = pd.DataFrame(model.cv_results_)\n",
    "        df_cv_results.sort_values('rank_test_score', inplace=True)\n",
    "        cv_resul_df = pd.DataFrame(df_cv_results['rank_test_score'])\n",
    "        cv_resul_df['mean_train_score'] = df_cv_results['mean_train_score']\n",
    "        cv_resul_df['std_train_score'] = df_cv_results['std_train_score']\n",
    "        cv_resul_df['mean_test_score'] = df_cv_results['mean_test_score']\n",
    "        cv_resul_df['std_test_score'] = df_cv_results['std_test_score']\n",
    "        cv_resul_df['params'] = df_cv_results['params']\n",
    "        print(cv_resul_df.head(5))\n",
    "        print('-----------------------------------------------------------------')\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        #Feature Importance\n",
    "        import_model = model.best_estimator_._final_estimator.feature_importances_\n",
    "        var_columns = [c for c in X if c not in ['Class_name']]\n",
    "        df_var_imp = pd.DataFrame({'Variable': var_columns,\n",
    "                                   'Importance': import_model}) \\\n",
    "                .sort_values(by='Importance', ascending=False) \\\n",
    "                .reset_index(drop=True)\n",
    "        print(df_var_imp.head(5))\n",
    "        print('-----------------------------------------------------------------')\n",
    "        print('-----------------------------------------------------------------')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>class_obs_name</th>\n",
       "      <th>class_pred_name</th>\n",
       "      <th>x</th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>749860.355965</td>\n",
       "      <td>2.502026e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Modern</td>\n",
       "      <td>Modern</td>\n",
       "      <td>748314.390156</td>\n",
       "      <td>2.500312e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>759238.354770</td>\n",
       "      <td>2.506520e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>754710.403501</td>\n",
       "      <td>2.519628e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>747939.322366</td>\n",
       "      <td>2.500585e+06</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  class_obs_name class_pred_name              x             y\n",
       "0    Traditional     Traditional  749860.355965  2.502026e+06\n",
       "1         Modern          Modern  748314.390156  2.500312e+06\n",
       "2    Traditional     Traditional  759238.354770  2.506520e+06\n",
       "3    Traditional     Traditional  754710.403501  2.519628e+06\n",
       "4    Traditional     Traditional  747939.322366  2.500585e+06"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test_ = df_pred\n",
    "df_test_ = df_test_.rename(columns={0:'class_pred'})\n",
    "df_test_coords = pd.DataFrame(df_test_)\n",
    "\n",
    "\n",
    "y_test_ = y_test.reset_index()\n",
    "df_test_coords['class_obs_name'] = y_test_['Class_name'] \n",
    "df_test_coords['class_pred_name'] =  le.inverse_transform(df_test_coords['class_pred'])\n",
    "df_test_coords['x'] = y_test_['x']\n",
    "df_test_coords['y'] = y_test_['y']\n",
    "\n",
    "df_test_coords = df_test_coords.drop(columns=['class_pred'])\n",
    "\n",
    "df_test_coords.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\validation_samples\\dec_validation.xlsx', index=True, header=True)\n",
    "\n",
    "df_test_coords.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pickle import dump\n",
    "from joblib import dump\n",
    "\n",
    "class_report.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cr_data_dec.xlsx', index=True, header=True)\n",
    "cf_m_df.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cm_data_dec.xlsx', index=True, header=True)\n",
    "cv_resul_df.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cv_data_dec.xlsx', index=True, header=True)\n",
    "df_var_imp.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\fi_data_dec.xlsx', index=True, header=True)\n",
    "\n",
    "\n",
    "# save the model\n",
    "dump(model, r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\model\\model_data_dec.joblib')\n",
    "# save the scaler\n",
    "dump(std_scale, open(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\model\\scaler_data_dec.pkl', 'wb'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "## DATA LOS"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "# loop through all models to get the mean cross validated score\n",
    "from sklearn.model_selection import StratifiedKFold, cross_val_score\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.model_selection import StratifiedKFold, cross_val_score\n",
    "from sklearn import preprocessing\n",
    "\n",
    "X = data_los.drop(labels=['Class_name','x','y'], axis=1)\n",
    "y = data_los[['Class_name','x','y']]\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=42, stratify = y['Class_name'])\n",
    "\n",
    "std_scale = preprocessing.StandardScaler().fit(X_train)\n",
    "\n",
    "X_train = std_scale.transform(X_train)\n",
    "X_test = std_scale.transform(X_test)\n",
    "\n",
    "le = LabelEncoder()\n",
    "\n",
    "y_train_encoded = le.fit_transform(y_train['Class_name'])\n",
    "y_test_encoded = le.transform(y_test['Class_name'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 50 folds for each of 216 candidates, totalling 10800 fits\n",
      "Training with RandomForestClassifier\n",
      "Classification Report:\n",
      "                precision recall f1-score support\n",
      "0        Modern      0.83   0.91     0.86     159\n",
      "1   Traditional      0.89   0.81     0.85     155\n",
      "2      accuracy       NaN    NaN     0.86     314\n",
      "3     macro avg      0.86   0.86     0.86     314\n",
      "4  weighted avg      0.86   0.86     0.86     314\n",
      "-----------------------------------------------------------------\n",
      "Confusion Matrix:\n",
      "          0         1\n",
      "0  0.905660  0.094340\n",
      "1  0.193548  0.806452\n",
      "-----------------------------------------------------------------\n",
      "Cross-validation...\n",
      "     rank_test_score  mean_train_score  std_train_score  mean_test_score  \\\n",
      "107                1           0.85932         0.004231         0.857138   \n",
      "143                1           0.85932         0.004231         0.857138   \n",
      "139                1           0.85932         0.004231         0.857138   \n",
      "135                1           0.85932         0.004231         0.857138   \n",
      "103                1           0.85932         0.004231         0.857138   \n",
      "\n",
      "     std_test_score                                             params  \n",
      "107        0.041248  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "143        0.041248  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "139        0.041248  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "135        0.041248  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "103        0.041248  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "-----------------------------------------------------------------\n",
      "-----------------------------------------------------------------\n",
      "       Variable  Importance\n",
      "0  Total_Lenght         1.0\n",
      "-----------------------------------------------------------------\n",
      "-----------------------------------------------------------------\n",
      "CPU times: total: 55min 12s\n",
      "Wall time: 1h 25min 51s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "import joblib\n",
    "from joblib import parallel_backend\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "algorithm_name = ['RandomForestClassifier']\n",
    "algorithm = [rf_gs]\n",
    "\n",
    "with parallel_backend('dask'):\n",
    "    \n",
    "    for item in range (0,1):\n",
    "        \n",
    "        model = algorithm[item]\n",
    "        model.fit(X_train, y_train_encoded) \n",
    "        \n",
    "        print('Training with',algorithm_name[item])\n",
    "        \n",
    "        y_pred = model.predict(X_test)\n",
    "        \n",
    "        #pred 2020 all polderas\n",
    "        df_pred= pd.DataFrame(y_pred)\n",
    "        \n",
    "        #labels\n",
    "        \n",
    "        class_labels = ['Traditional','Modern']\n",
    "        \n",
    "        ##CR\n",
    "        print('Classification Report:')\n",
    "        class_report = classification_report_to_dataframe(classification_report(y_test_encoded,\n",
    "                                                                                df_pred,\n",
    "                                                                                target_names=list(le.classes_)))\n",
    "        print(class_report)\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        #CM\n",
    "        print('Confusion Matrix:')\n",
    "        cf_m = confusion_matrix(y_test_encoded, df_pred, normalize= 'true')\n",
    "        cf_m_df = pd.DataFrame(cf_m)\n",
    "        print(cf_m_df)\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        ##CV\n",
    "        print('Cross-validation...')\n",
    "        df_cv_results = pd.DataFrame(model.cv_results_)\n",
    "        df_cv_results.sort_values('rank_test_score', inplace=True)\n",
    "        cv_resul_df = pd.DataFrame(df_cv_results['rank_test_score'])\n",
    "        cv_resul_df['mean_train_score'] = df_cv_results['mean_train_score']\n",
    "        cv_resul_df['std_train_score'] = df_cv_results['std_train_score']\n",
    "        cv_resul_df['mean_test_score'] = df_cv_results['mean_test_score']\n",
    "        cv_resul_df['std_test_score'] = df_cv_results['std_test_score']\n",
    "        cv_resul_df['params'] = df_cv_results['params']\n",
    "        print(cv_resul_df.head(5))\n",
    "        print('-----------------------------------------------------------------')\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        #Feature Importance\n",
    "        import_model = model.best_estimator_._final_estimator.feature_importances_\n",
    "        var_columns = [c for c in X if c not in ['Class_name']]\n",
    "        df_var_imp = pd.DataFrame({'Variable': var_columns,\n",
    "                                   'Importance': import_model}) \\\n",
    "                .sort_values(by='Importance', ascending=False) \\\n",
    "                .reset_index(drop=True)\n",
    "        print(df_var_imp.head(5))\n",
    "        print('-----------------------------------------------------------------')\n",
    "        print('-----------------------------------------------------------------')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>class_obs_name</th>\n",
       "      <th>class_pred_name</th>\n",
       "      <th>x</th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>749860.355965</td>\n",
       "      <td>2.502026e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Modern</td>\n",
       "      <td>Modern</td>\n",
       "      <td>748314.390156</td>\n",
       "      <td>2.500312e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>759238.354770</td>\n",
       "      <td>2.506520e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>754710.403501</td>\n",
       "      <td>2.519628e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>747939.322366</td>\n",
       "      <td>2.500585e+06</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  class_obs_name class_pred_name              x             y\n",
       "0    Traditional     Traditional  749860.355965  2.502026e+06\n",
       "1         Modern          Modern  748314.390156  2.500312e+06\n",
       "2    Traditional     Traditional  759238.354770  2.506520e+06\n",
       "3    Traditional     Traditional  754710.403501  2.519628e+06\n",
       "4    Traditional     Traditional  747939.322366  2.500585e+06"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test_ = df_pred\n",
    "df_test_ = df_test_.rename(columns={0:'class_pred'})\n",
    "df_test_coords = pd.DataFrame(df_test_)\n",
    "\n",
    "\n",
    "y_test_ = y_test.reset_index()\n",
    "df_test_coords['class_obs_name'] = y_test_['Class_name'] \n",
    "df_test_coords['class_pred_name'] =  le.inverse_transform(df_test_coords['class_pred'])\n",
    "df_test_coords['x'] = y_test_['x']\n",
    "df_test_coords['y'] = y_test_['y']\n",
    "\n",
    "df_test_coords = df_test_coords.drop(columns=['class_pred'])\n",
    "\n",
    "df_test_coords.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\validation_samples\\los_validation.xlsx', index=True, header=True)\n",
    "\n",
    "df_test_coords.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pickle import dump\n",
    "from joblib import dump\n",
    "\n",
    "class_report.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cr_data_los.xlsx', index=True, header=True)\n",
    "cf_m_df.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cm_data_los.xlsx', index=True, header=True)\n",
    "cv_resul_df.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cv_data_los.xlsx', index=True, header=True)\n",
    "df_var_imp.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\fi_data_los.xlsx', index=True, header=True)\n",
    "\n",
    "\n",
    "# save the model\n",
    "dump(model, r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\model\\model_data_los.joblib')\n",
    "# save the scaler\n",
    "dump(std_scale, open(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\model\\scaler_data_los.pkl', 'wb'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ALL"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Class_name</th>\n",
       "      <th>x</th>\n",
       "      <th>y</th>\n",
       "      <th>doy_SOS</th>\n",
       "      <th>doy_POS</th>\n",
       "      <th>doy_EOS</th>\n",
       "      <th>Increase</th>\n",
       "      <th>Decrease</th>\n",
       "      <th>Total_Lenght</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>749241.441943</td>\n",
       "      <td>2.503858e+06</td>\n",
       "      <td>241.0</td>\n",
       "      <td>304.0</td>\n",
       "      <td>415.0</td>\n",
       "      <td>63.0</td>\n",
       "      <td>111.0</td>\n",
       "      <td>174.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>749280.247420</td>\n",
       "      <td>2.503860e+06</td>\n",
       "      <td>226.0</td>\n",
       "      <td>306.0</td>\n",
       "      <td>373.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>67.0</td>\n",
       "      <td>147.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>749109.869245</td>\n",
       "      <td>2.504332e+06</td>\n",
       "      <td>213.0</td>\n",
       "      <td>308.0</td>\n",
       "      <td>359.0</td>\n",
       "      <td>95.0</td>\n",
       "      <td>51.0</td>\n",
       "      <td>146.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>749174.867408</td>\n",
       "      <td>2.504313e+06</td>\n",
       "      <td>213.0</td>\n",
       "      <td>286.0</td>\n",
       "      <td>360.0</td>\n",
       "      <td>73.0</td>\n",
       "      <td>74.0</td>\n",
       "      <td>147.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>749186.259842</td>\n",
       "      <td>2.504325e+06</td>\n",
       "      <td>215.0</td>\n",
       "      <td>273.0</td>\n",
       "      <td>361.0</td>\n",
       "      <td>58.0</td>\n",
       "      <td>88.0</td>\n",
       "      <td>146.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1274</th>\n",
       "      <td>Modern</td>\n",
       "      <td>761569.863453</td>\n",
       "      <td>2.509808e+06</td>\n",
       "      <td>240.0</td>\n",
       "      <td>287.0</td>\n",
       "      <td>335.0</td>\n",
       "      <td>47.0</td>\n",
       "      <td>48.0</td>\n",
       "      <td>95.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1275</th>\n",
       "      <td>Modern</td>\n",
       "      <td>761527.318700</td>\n",
       "      <td>2.509905e+06</td>\n",
       "      <td>258.0</td>\n",
       "      <td>294.0</td>\n",
       "      <td>335.0</td>\n",
       "      <td>36.0</td>\n",
       "      <td>41.0</td>\n",
       "      <td>77.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1278</th>\n",
       "      <td>Modern</td>\n",
       "      <td>761440.530656</td>\n",
       "      <td>2.510102e+06</td>\n",
       "      <td>252.0</td>\n",
       "      <td>295.0</td>\n",
       "      <td>340.0</td>\n",
       "      <td>43.0</td>\n",
       "      <td>45.0</td>\n",
       "      <td>88.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1280</th>\n",
       "      <td>Modern</td>\n",
       "      <td>761554.821765</td>\n",
       "      <td>2.509983e+06</td>\n",
       "      <td>238.0</td>\n",
       "      <td>273.0</td>\n",
       "      <td>342.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>69.0</td>\n",
       "      <td>104.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1284</th>\n",
       "      <td>Modern</td>\n",
       "      <td>761548.711861</td>\n",
       "      <td>2.509887e+06</td>\n",
       "      <td>242.0</td>\n",
       "      <td>294.0</td>\n",
       "      <td>340.0</td>\n",
       "      <td>52.0</td>\n",
       "      <td>46.0</td>\n",
       "      <td>98.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1046 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       Class_name              x             y  doy_SOS  doy_POS  doy_EOS  \\\n",
       "0     Traditional  749241.441943  2.503858e+06    241.0    304.0    415.0   \n",
       "1     Traditional  749280.247420  2.503860e+06    226.0    306.0    373.0   \n",
       "4     Traditional  749109.869245  2.504332e+06    213.0    308.0    359.0   \n",
       "5     Traditional  749174.867408  2.504313e+06    213.0    286.0    360.0   \n",
       "6     Traditional  749186.259842  2.504325e+06    215.0    273.0    361.0   \n",
       "...           ...            ...           ...      ...      ...      ...   \n",
       "1274       Modern  761569.863453  2.509808e+06    240.0    287.0    335.0   \n",
       "1275       Modern  761527.318700  2.509905e+06    258.0    294.0    335.0   \n",
       "1278       Modern  761440.530656  2.510102e+06    252.0    295.0    340.0   \n",
       "1280       Modern  761554.821765  2.509983e+06    238.0    273.0    342.0   \n",
       "1284       Modern  761548.711861  2.509887e+06    242.0    294.0    340.0   \n",
       "\n",
       "      Increase  Decrease  Total_Lenght  \n",
       "0         63.0     111.0         174.0  \n",
       "1         80.0      67.0         147.0  \n",
       "4         95.0      51.0         146.0  \n",
       "5         73.0      74.0         147.0  \n",
       "6         58.0      88.0         146.0  \n",
       "...        ...       ...           ...  \n",
       "1274      47.0      48.0          95.0  \n",
       "1275      36.0      41.0          77.0  \n",
       "1278      43.0      45.0          88.0  \n",
       "1280      35.0      69.0         104.0  \n",
       "1284      52.0      46.0          98.0  \n",
       "\n",
       "[1046 rows x 9 columns]"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_all = pd.DataFrame(data_all_rice['Class_name'])\n",
    "data_all['x'] = data_all_rice['x']\n",
    "data_all['y'] = data_all_rice['y']\n",
    "data_all['doy_SOS'] = data_all_rice['doy_SOS']\n",
    "data_all['doy_POS'] = data_all_rice['doy_POS']\n",
    "data_all['doy_EOS'] = data_all_rice['doy_EOS']\n",
    "data_all['Increase'] = data_all_rice['Increase']\n",
    "data_all['Decrease'] = data_all_rice['Decrease']\n",
    "data_all['Total_Lenght'] = data_all_rice['Total_Lenght']\n",
    "data_all"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "# loop through all models to get the mean cross validated score\n",
    "from sklearn.model_selection import StratifiedKFold, cross_val_score\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.model_selection import StratifiedKFold, cross_val_score\n",
    "from sklearn import preprocessing\n",
    "\n",
    "X = data_all.drop(labels=['Class_name','x','y'], axis=1)\n",
    "y = data_all[['Class_name','x','y']]\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=42, stratify = y['Class_name'])\n",
    "\n",
    "std_scale = preprocessing.StandardScaler().fit(X_train)\n",
    "\n",
    "X_train = std_scale.transform(X_train)\n",
    "X_test = std_scale.transform(X_test)\n",
    "\n",
    "le = LabelEncoder()\n",
    "\n",
    "y_train_encoded = le.fit_transform(y_train['Class_name'])\n",
    "y_test_encoded = le.transform(y_test['Class_name'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 50 folds for each of 216 candidates, totalling 10800 fits\n",
      "Training with RandomForestClassifier\n",
      "Classification Report:\n",
      "                precision recall f1-score support\n",
      "0        Modern      0.83   0.93     0.88     159\n",
      "1   Traditional      0.92   0.81     0.86     155\n",
      "2      accuracy       NaN    NaN     0.87     314\n",
      "3     macro avg      0.88   0.87     0.87     314\n",
      "4  weighted avg      0.87   0.87     0.87     314\n",
      "-----------------------------------------------------------------\n",
      "Confusion Matrix:\n",
      "          0         1\n",
      "0  0.930818  0.069182\n",
      "1  0.193548  0.806452\n",
      "-----------------------------------------------------------------\n",
      "Cross-validation...\n",
      "    rank_test_score  mean_train_score  std_train_score  mean_test_score  \\\n",
      "30                1          0.871979         0.004801         0.860666   \n",
      "26                1          0.871979         0.004801         0.860666   \n",
      "66                1          0.871979         0.004801         0.860666   \n",
      "62                1          0.871979         0.004801         0.860666   \n",
      "45                5          0.874257         0.004309         0.860392   \n",
      "\n",
      "    std_test_score                                             params  \n",
      "30        0.039291  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "26        0.039291  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "66        0.039291  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "62        0.039291  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "45        0.039803  {'rfc__class_weight': 'balanced', 'rfc__max_de...  \n",
      "-----------------------------------------------------------------\n",
      "-----------------------------------------------------------------\n",
      "       Variable  Importance\n",
      "0  Total_Lenght    0.502211\n",
      "1       doy_EOS    0.209530\n",
      "2      Decrease    0.124633\n",
      "3       doy_SOS    0.070823\n",
      "4      Increase    0.069035\n",
      "-----------------------------------------------------------------\n",
      "-----------------------------------------------------------------\n",
      "CPU times: total: 54min 46s\n",
      "Wall time: 1h 25min\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "import joblib\n",
    "from joblib import parallel_backend\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "algorithm_name = ['RandomForestClassifier']\n",
    "algorithm = [rf_gs]\n",
    "\n",
    "with parallel_backend('dask'):\n",
    "    \n",
    "    for item in range (0,1):\n",
    "        \n",
    "        model = algorithm[item]\n",
    "        model.fit(X_train, y_train_encoded) \n",
    "        \n",
    "        print('Training with',algorithm_name[item])\n",
    "        \n",
    "        y_pred = model.predict(X_test)\n",
    "        \n",
    "        #pred 2020 all polderas\n",
    "        df_pred= pd.DataFrame(y_pred)\n",
    "        \n",
    "        #labels\n",
    "        \n",
    "        class_labels = ['Traditional','Modern']\n",
    "        \n",
    "        ##CR\n",
    "        print('Classification Report:')\n",
    "        class_report = classification_report_to_dataframe(classification_report(y_test_encoded,\n",
    "                                                                                df_pred,\n",
    "                                                                                target_names=list(le.classes_)))\n",
    "        print(class_report)\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        #CM\n",
    "        print('Confusion Matrix:')\n",
    "        cf_m = confusion_matrix(y_test_encoded, df_pred, normalize= 'true')\n",
    "        cf_m_df = pd.DataFrame(cf_m)\n",
    "        print(cf_m_df)\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        ##CV\n",
    "        print('Cross-validation...')\n",
    "        df_cv_results = pd.DataFrame(model.cv_results_)\n",
    "        df_cv_results.sort_values('rank_test_score', inplace=True)\n",
    "        cv_resul_df = pd.DataFrame(df_cv_results['rank_test_score'])\n",
    "        cv_resul_df['mean_train_score'] = df_cv_results['mean_train_score']\n",
    "        cv_resul_df['std_train_score'] = df_cv_results['std_train_score']\n",
    "        cv_resul_df['mean_test_score'] = df_cv_results['mean_test_score']\n",
    "        cv_resul_df['std_test_score'] = df_cv_results['std_test_score']\n",
    "        cv_resul_df['params'] = df_cv_results['params']\n",
    "        print(cv_resul_df.head(5))\n",
    "        print('-----------------------------------------------------------------')\n",
    "        print('-----------------------------------------------------------------')\n",
    "        \n",
    "        #Feature Importance\n",
    "        import_model = model.best_estimator_._final_estimator.feature_importances_\n",
    "        var_columns = [c for c in X if c not in ['Class_name']]\n",
    "        df_var_imp = pd.DataFrame({'Variable': var_columns,\n",
    "                                   'Importance': import_model}) \\\n",
    "                .sort_values(by='Importance', ascending=False) \\\n",
    "                .reset_index(drop=True)\n",
    "        print(df_var_imp.head(5))\n",
    "        print('-----------------------------------------------------------------')\n",
    "        print('-----------------------------------------------------------------')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>class_obs_name</th>\n",
       "      <th>class_pred_name</th>\n",
       "      <th>x</th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>749860.355965</td>\n",
       "      <td>2.502026e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Modern</td>\n",
       "      <td>Modern</td>\n",
       "      <td>748314.390156</td>\n",
       "      <td>2.500312e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>759238.354770</td>\n",
       "      <td>2.506520e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>754710.403501</td>\n",
       "      <td>2.519628e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Traditional</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>747939.322366</td>\n",
       "      <td>2.500585e+06</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  class_obs_name class_pred_name              x             y\n",
       "0    Traditional     Traditional  749860.355965  2.502026e+06\n",
       "1         Modern          Modern  748314.390156  2.500312e+06\n",
       "2    Traditional     Traditional  759238.354770  2.506520e+06\n",
       "3    Traditional     Traditional  754710.403501  2.519628e+06\n",
       "4    Traditional     Traditional  747939.322366  2.500585e+06"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test_ = df_pred\n",
    "df_test_ = df_test_.rename(columns={0:'class_pred'})\n",
    "df_test_coords = pd.DataFrame(df_test_)\n",
    "\n",
    "\n",
    "y_test_ = y_test.reset_index()\n",
    "df_test_coords['class_obs_name'] = y_test_['Class_name'] \n",
    "df_test_coords['class_pred_name'] =  le.inverse_transform(df_test_coords['class_pred'])\n",
    "df_test_coords['x'] = y_test_['x']\n",
    "df_test_coords['y'] = y_test_['y']\n",
    "\n",
    "df_test_coords = df_test_coords.drop(columns=['class_pred'])\n",
    "\n",
    "df_test_coords.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\validation_samples\\all_validation.xlsx', index=True, header=True)\n",
    "\n",
    "df_test_coords.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pickle import dump\n",
    "from joblib import dump\n",
    "\n",
    "class_report.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cr_data_all.xlsx', index=True, header=True)\n",
    "cf_m_df.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cm_data_all.xlsx', index=True, header=True)\n",
    "cv_resul_df.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\cv_data_all.xlsx', index=True, header=True)\n",
    "df_var_imp.to_excel(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\accuracy\\fi_data_all.xlsx', index=True, header=True)\n",
    "\n",
    "\n",
    "# save the model\n",
    "dump(model, r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\model\\model_data_all.joblib')\n",
    "# save the scaler\n",
    "dump(std_scale, open(r'C:\\Users\\ksucrops\\OneDrive - Kansas State University\\Documents\\crop_season_stats_data\\results\\model\\scaler_data_all.pkl', 'wb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "colab": {
   "collapsed_sections": [],
   "provenance": [],
   "toc_visible": true
  },
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.10"
  },
  "toc-autonumbering": true,
  "toc-showmarkdowntxt": false
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
